glCreateProgram: Unterschied zwischen den Versionen
K (Trennlinien entfernt) |
Flo (Diskussion | Beiträge) K (→Siehe auch) |
||
Zeile 40: | Zeile 40: | ||
'''Hintergrundwissen :''' [[Shader]]<br> | '''Hintergrundwissen :''' [[Shader]]<br> | ||
[http://developer.3dlabs.com/openGL2/slapi/CreateProgramObjectARB.htm Englische Originalversion] (Copyright 3DLabs Inc.) | [http://developer.3dlabs.com/openGL2/slapi/CreateProgramObjectARB.htm Englische Originalversion] (Copyright 3DLabs Inc.) | ||
+ | |||
+ | [[Kategorie:GL|CreateProgramObjectARB]] |
Version vom 17. August 2004, 20:01 Uhr
Inhaltsverzeichnis
glCreateProgramObjectARB
Name
glCreateProgramObjectARB - Erstellt ein Programmobjekt.
Delphi-Spezifikation
function glCreateProgramObjectARB : glHandleARB;
Beschreibung
glCreateProgramObjectARB erstellt ein leeres Programmobjekt und gibt ein Handle darauf zurück. Ein Programmobjekt ist ein Kontainerobjekt an das Shaderobjekte gebunden werden können. Durch diese Methodik wird es möglich Shader modular zu machen, so dass Teile eines Shaders durch mehrere Shaderobjekte definiert werden können. Es bietet ausserdem die Möglichkeit die Kompatibilität zwischen den Shadern zu prüfen, die genutzt werden um einen ausführbaren Satz von Shadern zu erstellen (z.B. die Kompatibilität zwischen einem Vertexshader und einem Fragmentshader). Sobald ein Shaderobjekt nicht mehr als Teil eines Programmobjektes benötigt wird, kann dieses übrigens gelöscht werden.
Ein ausführbarer Satz von Shadern wird generiert, indem man die an das Programmobjekt gebundenen Shader linkt. Dieses ausführbare Shaderset kann dann durch einen Aufruf an glUseProgramObjectARB als Ersatz für die feste Renderpipeline gesetzt werden. Programmobjekte können mittels glDeleteObjectARB gelöscht werden, und ihr Speicher wird freigegeben sobald diese in keinem Renderkontext mehr verwendet werden.
Hinweise
Wie Displaylisten und Texturenobjekte kann auch der Namensraum für Objekthandles über mehere Kontexte geteilt werden, solange die Serverseiten der Kontexte den gleichen Adressraum besitzen. Wenn Handles über mehrere Kontexte verteilt genutzt werden, werden auch alle angehangenen Objekte und deren Daten dort verfügbar gemacht.
Änderungen an einem Programmobjekt in einem Renderkontext müssen allerdings nicht unbedingt in anderen Renderkontexten (die das Objekt auch nutzen) effektiv werden, sofern man dort nicht explizit glUseProgramObjectARB aufruft.
Fehlermeldungen
GL_INVALID_OPERATION wird generiert wenn glCreateProgramObjectARB zwischen einem glBegin und dem passenden glEnd aufgerufen wird.
Zugehörige Wertrückgaben
glGetHandleARB mit dem Argument GL_PROGRAM_OBJECT_ARB.
glGetAttachedObjectsARB mit dem Handle eines gültigen Programmobjektes.
glGetInfoLogARB mit dem Handle eines gültigen Programmobjektes.
glGetObjectParameterARB mit dem Handle eines gültigen Programmobjektes.
Siehe auch
glAttachObjectARB, glCreateShaderObjectARB, glDeleteObjectARB, glDetachObjectARB, glLinkProgramARB, glUseProgramObjectARB, glValidateProgramARB
Hintergrundwissen : Shader
Englische Originalversion (Copyright 3DLabs Inc.)