Gl.UseProgram (gb.opengl.glsl)
Static Sub UseProgram ( Program As Integer )
Installe un programme objet en tant que partie de l’état courant de rendu.
Paramètres
-
Program Spécifie le gestionnaire d’un programme objet dont les exécutables doivent être utilisés en tant que partie de l’état courant de rendu.
Description
Gl.UseProgram installe le programme objet spécifié par
Program en tant que partie de l’état courant de rendu.
Un exécutable (ou plus) est créé(s) dans un programme objet en réussissant à lui rattacher des objets reflet par
Gl.AttachShader, en parvenant à compiler les objets reflet avec
Gl.CompileShader, et en liant avec succès le programme objet avec
Gl.LinkProgram.
Un programme objet contiendra un exécutable qui tournera sur le processeur de sommets s’il contient au moins un objet reflet de type
Gl.GL_VERTEX_SHADER qui ait été compilé et lié avec succès. Similairement, un programme objet contiendra un exécutable qui tournera sur le processeur de fragments s’il contient au moins un objet reflet de type
Gl.GL_FRAGMENT_SHADER qui ait été compilé et lié avec succès.
L’installation réussie d’un exécutable sur un processeur programmable entraînera la désactivation de la fonctionnalité fixe correspondante de OpenGL. En particulier, si un exécutable est installé sur le processeur de sommets, la fonctionnalité fixe OpenGL sera désactivée comme suit :
-
La matrice modelview n’est pas appliquée aux coordonnées du vecteur.
-
La matrice de projection modelview n’est pas appliquée aux coordonnées du vecteur.
-
Les matrices de texture ne sont pas appliquées aux coordonnées de texture.
-
Les normales ne sont pas transformées en coordonnées de point de vue.
-
Les normales ne sont pas remises à l’échelle ou normalisées.
-
La normalisation de normales évaluées par Gl.GL_AUTO_NORMAL n’est pas réalisée.
-
Les coordonnées de texture ne sont pas générées automatiquement.
-
L’éclairage pré-scalaire n’est pas réalisé.
-
Le calcul des couleurs de matériaux ne sont pas effectués.
-
Les index de couleur d’éclairage ne sont pas réalisés.
-
Cette liste s’applique également lors de la définition de la position bitmap courante.
L’exécutable installé sur le processeur de sommets est supposée devoir implémenter toute les fonctionnalités désirées de la liste précédente. Similairement, si un exécutable est installé sur le processeur de fragments, le fonctionnalité fixe de OpenGL sera désactivée comme suit :
-
L’environnement de texture et les fonctions de texture ne sont pas appliqués.
-
L’application de texture n’est pas effectuée.
-
La sommation de couleur n’est pas effectuée.
-
Le brouillard n’est pas appliqué.
Là encore, le reflet de fragment installé est présumé implémenter toute fonctionnalité désirée de la précédente liste.
Quand un programme objet est en cours, les applications peuvent librement modifier les objets reflet rattachés, compiler les objets rattachés, attacher des objets reflet supplémentaires, et détacher ou effacer des objets reflet.
Aucune de ces opérations n’affectera les exécutables faisant partie de l’état courant. Cependant, la réédition de lien du programme objet en cours d’utilisation installera le programme objet comme partie de l’état de rendu courant si elle réussit (voir Gl.LinkProgram). Si la réédition de lien du programme objet en cours échoue, son status de lien sera positionné à
FALSE, mais les exécutables et les états associés continueront à faire partie de l’état courant jusqu'à ce qu’un appel subséquent à Gl.UseProgram le retire. Après qu’il soit retiré, il ne peut plus être partie de l’état courant tant qu’il n’a pas été lié avec succès.
Si
Program contient des objets reflet de Gl.GL_VERTEX_SHADER mais ne contient pas d’objet de type Gl.GL_FRAGMENT_SHADER, un exécutable sera installé sur le processeur de sommets, mais les fonctionnalités fixes seront utilisées pour le processus de fragment. De manière similaire, si
Program contient des objets reflet de type Gl.GL_FRAGMENT_SHADER mais ne contient pas d’objet de type Gl.GL_VERTEX_SHADER, un exécutable sera installé sur le processeur de fragment, mais les fonctionnalités fixes seront utilisées pour le processus de sommets. Si
Program vaut 0, les processeurs programmables seront désactivés et les fonctionnalités fixes seront utilisées pour le processus de fragment et le processus de sommets.
Gl.UseProgram n’est disponible qu’à partir de la version GL 2.0 ou supérieure.
Quand un programme objet est en cours d’utilisation, l’état qui contrôle les fonctionnalités fixes désactivées peut également être mis à jour en recourant à des appels normaux à OpenGL.
Comme les display lists et les objets texture, l’espace de nommage des programmes objet doit être partagé au travers d’un ensemble de contextes, aussi longtemps que les cotés serveur des contextes partagent le même espace d’adressage. Si l’espace de nommageest partagé au travers des contextes, tout objet attaché est les données qui lui sont associées sont également partagés.
Les applications sont responsables de la fourniture de synchronisation au travers d’appels à l’API quand les objets sont accédés depuis différentes exécutions de threads.
Erreurs
_ Gets Associés
-
Gl.Get avec l’argument Gl.GL_CURRENT_PROGRAM
-
Gl.GetActiveAttrib avec un programme objet valide et l’index d’une variable attribut active
-
Gl.GetActiveUniform avec un programme objet valide et l’index d’un ‘uniform’ actif
-
Gl.GetAttachedShaders avec un programme objet valide
-
Gl.GetAttribLocation avec un programme objet valide et le nom d’un attribut
-
Gl.GetProgramiv avec un programme objet valide et le paramètre à requérir
-
Gl.GetProgramInfoLog avec un programme objet valide
-
Gl.GetUniform avec un programme objet valide et l’emplacement d’un ‘uniform’
-
Gl.GetUniformLocation avec un programme objet valide et le nom d’un ‘uniform’
-
Gl.IsProgram
Voir aussi