glGetActiveAttrib
Inhaltsverzeichnis
glGetActiveAttribARB
Name
glGetActiveAttribARB - Gibt Informationen über eine aktive Attributvariable des angegebenen Programmobjekts aus
Delphi-Spezifikation
procedure glGetActiveAttribARB(program : GLhandleARB; index : GLuint; maxLength : GLsizei; length : PGLsizei; size : PGLint; type : PGLenum; name : PGLhandleARB)
Parameter
program | Gibt das Programobjekt an, das abgefragt werden soll. |
---|---|
index | Gibt den Index der Attributvariable an, die abgefragt werden soll. |
maxLength | Gibt maximale Anzahl an Zeichen an, die OpenGL in den String name schreiben darf. |
length | Liefert die Anzahl der Zeichen, die OpenGL in den String name geschrieben hat. |
size | Liefert die Größe der Attributvariable. |
type | Liefert die Datentypen der Attributvariable. |
name | Liefert einen String, der den Namen der Attributvariable enthält. |
Beschreibung
glGetActiveAttribARB liefert Informationen über die aktive Attributvariable, die mit index angegeben wird. Der Vertexshader, der abgefragt werden soll, ist derjenige, der an das Programmobjekt per program angehängt wurde. Es ist ist nicht nötig, dass program schon gelinkt wurde, aber es sollte vorher schon Ziel bei einem Aufruf von glLinkProgramARB gewesen sein. Die Größe des Zeichenpuffers - angesteuert durch die Anwendung - wird mit maxLength angegeben, und der Pointer zu diesem Zeichenpuffer wird in name ausgegeben. Eine Attributvariable gilt als "aktiv" in einem Vertexshader, wenn es sicher ist, dass auf sie zugegriffen wird, sobald der Vertexshader ausgeführt wird.
Die Anzahl der aktiven Attribute kann man mit dem Aufruf von glGetObjectParameterARB mit dem Token GL_OBJECT_ACTIVE_ATTRIBUTES_ARB abfragen. Der Wert 0 für index wählt das erste aktive Attribut und der Wert GL_OBJECT_ACTIVE_UNIFORMS_ARB - 1 wählt das letzte aktive Attribut. Die Länge des längsten Attributnamens kann man mit dem Aufruf von glGetObjectParameterARB mit dem Wert GL_OBJECT_ACTIVE_ATTRIBUTES_MAX_LENGTH_ARB erfahren.
glGetAttribARB liefert den Namen der Attributvariable, die mit Index gesucht wurde. Die aktuelle Anzahl der Zeichen, die in den Puffer geschrieben wurden, wird in length ausgegeben. Wenn die Länge des ausgegeben Strings uninteressant ist, kann man nil im length-Argument angeben.
Das Argument type liefert einen Pointer auf den Datentyp der Attributvariable. Die symbolischen Konstanten GL_FLOAT, GL_FLOAT_VEC2_ARB, GL_FLOAT_VEC3_ARB, GL_FLOAT_VEC4_ARB, GL_FLOAT_MAT2_ARB, GL_FLOAT_MAT3_ARB und GL_FLOAT_MAT4_ARB könnten ausgegeben werden.
Diese Funktion kann dazu verwendet werden, sowohl eingebaute Attributvariablen (die mit dem Präfix "gl_" beginnen) als auch selbst erzeugte Vertexattributvariablen, die mit glBindAttribLocationARB angebunden wurden, abzufragen. Die Funktion wird so viele Informationen über die Attributvariable liefern, wie es möglich ist. Wenn keine Informationen verfügbar sind, ist length gleich 0 und name ein leerer String. Dieser Fall könnte eintreten, wenn die Funktion nach einer fehlgeschlagenen Linkoperation aufgerufen wird.
Hinweise
Attributvariablen müssen nicht mit glBindAttribLocationARB an generische Attribut-Indexwerte gebunden werden, bevor glGetActiveAttribARB aufgerufen wird.
Fehlermeldungen
GL_INVALID_VALUE wird generiert, wenn program kein von OpenGL erzeugtes Handle ist.
GL_INVALID_OPERATION wird generiert, wenn program nicht vom Typ GL_PROGRAM_OBJECT_ARB ist.
GL_INVALID_VALUE wird generiert, wenn index größer oder gleich der aktuellen Anzahl der aktiven Attributvariablen ist.
GL_INVALID_OPERATION wird generiert wenn glGetActiveAttribARB innerhalb eines glBegin-glEnd Blocks aufgerufen wird.
Siehe auch
glBindAttribLocationARB, glLinkProgramARB, glVertexAttribARB, glVertexAttribPointerARB