glGetActiveAttrib: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
 
K (Bot: konvertiere/korrigiere <BR>)
 
(7 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
= glGetActiveAttribARB =
+
= glGetActiveAttrib (glGetActiveAttribARB) =
 +
 
 +
 
  
<br>
 
 
== Name ==
 
== Name ==
'''glGetActiveAttribARB''' - Gibt Informationen über eine aktive Attributvariable des angegebenen Programmobjekts aus
+
'''glGetActiveAttrib''' - Gibt Informationen über eine aktive Attributvariable des angegebenen Programmobjekts aus
  
  
 
== Delphi-Spezifikation ==
 
== Delphi-Spezifikation ==
 +
 +
procedure '''glGetActiveAttrib'''(''program'' : GLuint;
 +
                            ''index'' : GLuint;
 +
                            ''maxLength'' : GLsizei;
 +
                            ''length'' : PGLsizei;
 +
                            ''size'' : PGLint;
 +
                            ''type'' : PGLenum;
 +
                            ''name'' : PGLchar)
  
 
  procedure '''glGetActiveAttribARB'''(''program'' : GLhandleARB;
 
  procedure '''glGetActiveAttribARB'''(''program'' : GLhandleARB;
Zeile 14: Zeile 23:
 
                                 ''size'' : PGLint;
 
                                 ''size'' : PGLint;
 
                                 ''type'' : PGLenum;
 
                                 ''type'' : PGLenum;
                                 ''name'' : PGLhandleARB)
+
                                 ''name'' : PGLcharARB)
  
<br>
 
  
 
== Parameter ==
 
== Parameter ==
Zeile 40: Zeile 48:
 
|-
 
|-
 
! ''name''
 
! ''name''
| Liefert einen String, der den Namen der Attributvariable enthält.
+
| Liefert einen ([[Null-terminiert]]en) String, der den Namen der Attributvariable enthält.
 
|}
 
|}
 
  
 
== Beschreibung ==  
 
== 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 Characterpuffer 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.
+
'''glGetActiveAttrib''' 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 erfolgreich gelinkt wurde, aber es sollte vorher schon Ziel bei einem Aufruf von [[glLinkProgram]] 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.
+
Die Anzahl der aktiven Attribute kann man mit dem Aufruf von [[glGetProgram]], [[glGetShader]] mit dem Token '''GL_OBJECT_ACTIVE_ATTRIBUTES''' abfragen. Der Wert 0 für ''index'' wählt das erste aktive Attribut und der Wert '''GL_OBJECT_ACTIVE_UNIFORMS''' - 1 wählt das letzte aktive Attribut. Die Länge des längsten Attributnamens kann man mit dem Aufruf von [[glGetProgram]], [[glGetShader]] mit dem Wert '''GL_OBJECT_ACTIVE_ATTRIBUTES_MAX_LENGTH''' 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.
+
'''glGetActiveAttrib''' liefert den Namen der Attributvariable, die mit Index gesucht wurde. Der zurück geleiferte String ist [[Null-terminiert]]. Die aktuelle Anzahl der Zeichen, die in den Puffer geschrieben wurden, wird in ''length'' ausgegeben (Das Null-Terminierungszeichen wird nicht mitgezählt). Wenn die Länge des ausgegeben Strings uninteressant ist, kann man '''nil''' im ''length''-Argument angeben.
  
  
Zeile 57: Zeile 64:
  
  
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.
+
Diese Funktion kann dazu verwendet werden, sowohl eingebaute Attributvariablen (die mit dem Präfix "gl_" beginnen) als auch selbst erzeugte Vertexattributvariablen, die mit [[glBindAttribLocation]] 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 ==
 
== Hinweise ==
Attributvariablen müssen nicht mit [[glBindAttribLocationARB]] an generische Attribut-Indexwerte gebunden werden, bevor '''glGetActiveAttribARB''' aufgerufen wird.
+
Attributvariablen müssen nicht mit [[glBindAttribLocation]] an generische Attribut-Indexwerte gebunden werden, bevor '''glGetActiveAttribARB''' aufgerufen wird.
  
  
Zeile 67: Zeile 73:
 
'''GL_INVALID_VALUE''' wird generiert, wenn ''program'' kein von OpenGL erzeugtes Handle ist.
 
'''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_OPERATION''' wird generiert, wenn ''program'' nicht vom Typ '''GL_PROGRAM_OBJECT''' ist.
  
 
'''GL_INVALID_VALUE''' wird generiert, wenn ''index'' größer oder gleich der aktuellen Anzahl der aktiven Attributvariablen 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.  
+
'''GL_INVALID_OPERATION''' wird generiert wenn glGetActiveAttrib innerhalb eines [[glBegin]]-[[glEnd]] Blocks aufgerufen wird.  
  
  
 
== Siehe auch ==
 
== Siehe auch ==
[[glBindAttribLocationARB]], [[glLinkProgramARB]], [[glVertexAttribARB]], [[glVertexAttribPointerARB]]
+
[[glBindAttribLocation]], [[glLinkProgram]], [[glVertexAttrib]], [[glVertexAttribPointer]]
  
  
 +
[[Kategorie:GL|GetActiveAttrib]]
 
[[Kategorie:GL|GetActiveAttribARB]]
 
[[Kategorie:GL|GetActiveAttribARB]]

Aktuelle Version vom 22. April 2006, 19:20 Uhr

glGetActiveAttrib (glGetActiveAttribARB)

Name

glGetActiveAttrib - Gibt Informationen über eine aktive Attributvariable des angegebenen Programmobjekts aus


Delphi-Spezifikation

procedure glGetActiveAttrib(program : GLuint;
                            index : GLuint;
                            maxLength : GLsizei;
                            length : PGLsizei;
                            size : PGLint;
                            type : PGLenum;
                            name : PGLchar)
procedure glGetActiveAttribARB(program : GLhandleARB;
                               index : GLuint;
                               maxLength : GLsizei;
                               length : PGLsizei;
                               size : PGLint;
                               type : PGLenum;
                               name : PGLcharARB)


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

glGetActiveAttrib 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 erfolgreich gelinkt wurde, aber es sollte vorher schon Ziel bei einem Aufruf von glLinkProgram 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 glGetProgram, glGetShader mit dem Token GL_OBJECT_ACTIVE_ATTRIBUTES abfragen. Der Wert 0 für index wählt das erste aktive Attribut und der Wert GL_OBJECT_ACTIVE_UNIFORMS - 1 wählt das letzte aktive Attribut. Die Länge des längsten Attributnamens kann man mit dem Aufruf von glGetProgram, glGetShader mit dem Wert GL_OBJECT_ACTIVE_ATTRIBUTES_MAX_LENGTH erfahren.


glGetActiveAttrib liefert den Namen der Attributvariable, die mit Index gesucht wurde. Der zurück geleiferte String ist Null-terminiert. Die aktuelle Anzahl der Zeichen, die in den Puffer geschrieben wurden, wird in length ausgegeben (Das Null-Terminierungszeichen wird nicht mitgezählt). 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 glBindAttribLocation 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 glBindAttribLocation 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 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 glGetActiveAttrib innerhalb eines glBegin-glEnd Blocks aufgerufen wird.


Siehe auch

glBindAttribLocation, glLinkProgram, glVertexAttrib, glVertexAttribPointer