Gambas Documentation
Aperçu du Langage
À traduire
Code Snippets
Comment faire ...
Compilation et installation
Composants
gb
gb.args
gb.cairo
gb.clipper
gb.complex
gb.compress
gb.crypt
gb.db
gb.db.form
gb.dbus
gb.debug
gb.desktop
gb.desktop.gnome.keyring
gb.eval
gb.eval.highlight
gb.form
gb.form.dialog
gb.form.editor
gb.form.mdi
gb.gmp
gb.gsl
gb.gtk
gb.gtk3
gb.gui
gb.image
gb.image.effect
gb.image.imlib
gb.image.io
gb.inotify
gb.libxml
gb.media
gb.mysql
gb.net
gb.net.curl
gb.net.smtp
gb.openal
gb.opengl
gb.opengl.glsl
Gl
AttachShader
CompileShader
CreateProgram
CreateShader
DeleteProgram
DeleteShader
DetachShader
GetAttachedShaders
GetProgramInfoLog
GetProgramiv
GetShaderInfoLog
GetShaderiv
GetShaderSource
IsProgram
IsShader
LinkProgram
ShaderSource
Uniform1f
Uniform1fv
Uniform1i
Uniform1iv
Uniform2f
Uniform2fv
Uniform2i
Uniform2iv
Uniform3f
Uniform3fv
Uniform3i
Uniform3iv
Uniform4f
Uniform4fv
Uniform4i
Uniform4iv
UniformMatrix2fv
UniformMatrix2x3fv
UniformMatrix2x4fv
UniformMatrix3fv
UniformMatrix3x2fv
UniformMatrix3x4fv
UniformMatrix4fv
UniformMatrix4x2fv
UniformMatrix4x3fv
UseProgram
ValidateProgram
VertexAttrib1f
VertexAttrib1fv
VertexAttrib2f
VertexAttrib2fv
VertexAttrib3f
VertexAttrib3fv
VertexAttrib4f
VertexAttrib4fv
gb.opengl.glu
gb.opengl.sge
gb.option
gb.pcre
gb.pdf
gb.qt4
gb.qt4.ext
gb.qt4.opengl
gb.qt4.webkit
gb.qt5
gb.qt5.opengl
gb.report
gb.scanner
gb.sdl
gb.sdl.sound
gb.settings
gb.signal
gb.util
gb.util.web
gb.v4l
gb.vb
gb.web
gb.web.feed
gb.xml
gb.xml.html
gb.xml.rpc
gb.xml.xslt
Controls pictures
Derniers changements
Dépôt d'applications
Documentation de l'Environnement de développement
Documentation des développeurs
Documents
Indenter
Index de tous les Documents
Index du langage
Lexique
LISEZ-MOI
Manuel du wiki
Messages d'erreur
Tutoriels
Wiki License

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