glGetActiveAttrib: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
K (Beschreibung)
K (Parameter)
Zeile 40: Zeile 40:
 
|-
 
|-
 
! ''name''
 
! ''name''
| Liefert einen String, der den Namen der Attributvariable enthält.
+
| Liefert einen (Null-terminierten) String, der den Namen der Attributvariable enthält.
 
|}
 
|}
 
  
 
== Beschreibung ==  
 
== Beschreibung ==  

Version vom 8. November 2005, 22:07 Uhr

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 (Null-terminierten) 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