glGetQueryObject: Unterschied zwischen den Versionen
K (Zusatz : was passiert, falls mehrere Queries mit demselben target und derselben Id definiert wurden?) |
|||
Zeile 9: | Zeile 9: | ||
procedure '''glGetQueryObjectiv'''(''id'': GLuint; ''pname'': GLenum; ''params'': PGLint); | procedure '''glGetQueryObjectiv'''(''id'': GLuint; ''pname'': GLenum; ''params'': PGLint); | ||
procedure '''glGetQueryObjectuiv'''(''id'': GLuint; ''pname'': GLenum; ''params'': PGLuint); | procedure '''glGetQueryObjectuiv'''(''id'': GLuint; ''pname'': GLenum; ''params'': PGLuint); | ||
+ | procedure '''glGetQueryObjecti64v'''(''id'': GLuint; ''pname'': GLenum; ''params'': PGLint64); | ||
+ | procedure '''glGetQueryObjectui64v'''(''id'': GLuint; ''pname'': GLenum; ''params'': PGLuint64); | ||
== Parameter == | == Parameter == | ||
Zeile 48: | Zeile 50: | ||
Falls mehrere Queries mit demselben ''target''-Wert und derselben Id vor '''getQueryObject''' erstellt wurden, wird sich das zurückgegebene Ergebnis immer auf die zuletzt erstellte Query beziehen. Die Ergebnisse aller Queries vor der zuletzt definierten gehen verloren, falls kein Ergebnis abgefragt wurde, bevor eine neue Query mit demselben ''target''-Wert und derselben Id erstellt wurde. | Falls mehrere Queries mit demselben ''target''-Wert und derselben Id vor '''getQueryObject''' erstellt wurden, wird sich das zurückgegebene Ergebnis immer auf die zuletzt erstellte Query beziehen. Die Ergebnisse aller Queries vor der zuletzt definierten gehen verloren, falls kein Ergebnis abgefragt wurde, bevor eine neue Query mit demselben ''target''-Wert und derselben Id erstellt wurde. | ||
+ | '''glGetQueryObjecti64v''' und '''glGetQueryObjectui64v''' sind nur verfügbar wenn die OpenGL Version 3.3 oder größer ist. | ||
== Fehlermeldungen == | == Fehlermeldungen == | ||
− | + | '''GL_INVALID_ENUM''' wird generiert wenn ''pname'' kein gültiger Wert ist. | |
+ | |||
+ | '''GL_INVALID_OPERATION''': ''id'' ist keine zulässige Id eines Query-Objektes oder das abzufragende Query-Objekt ist noch aktiv (ein Query-Objekt ist aktiv, wenn es mit [[glBeginQuery]] gestartet, aber noch nicht mit [[glEndQuery]] abgeschlossen wurde). | ||
+ | |||
+ | '''GL_INVALID_OPERATION''' wird generiert wenn '''glGetQueryObject''' zwischen [[glBegin]] und [[glEnd]] aufgerufen wird. | ||
== Zugehörige Wertrückgaben == | == Zugehörige Wertrückgaben == |
Aktuelle Version vom 18. April 2011, 13:46 Uhr
Inhaltsverzeichnis
glGetQueryObject
Name
glGetQueryObject - Fragt den Zustand eines Occlusion Query-Objektes ab.
Delphi-Spezifikation
procedure glGetQueryObjectiv(id: GLuint; pname: GLenum; params: PGLint); procedure glGetQueryObjectuiv(id: GLuint; pname: GLenum; params: PGLuint); procedure glGetQueryObjecti64v(id: GLuint; pname: GLenum; params: PGLint64); procedure glGetQueryObjectui64v(id: GLuint; pname: GLenum; params: PGLuint64);
Parameter
id | Id des abzufragenden Query-Objektes. |
---|---|
pname | Parametername, der abgefragt werden soll. Mögliche Werte sind GL_QUERY_RESULT und GL_QUERY_RESULT_AVAILABLE. |
params | Enthält die angeforderten Daten bezüglich der Eigenschaft pname. |
Beschreibung
glGetQueryObject liefert über params Werte der Eigenschaft pname des Query-Objektes mit der Id id zurück.
Zwei verschiedene Eigenschaften können abgefragt werden:
GL_QUERY_RESULT
- params liefert das Ergebnis eines Query-Objektes, also den Wert des Sample-Zählers (siehe glBeginQuery).
- Falls GL_QUERY_COUNTER_BITS auf 0 gesetzt ist, wird immer 0 zurückgeliefert.
GL_QUERY_RESULT_AVAILABLE
- params liefert GL_TRUE, falls das Ergebnis für ein Query-Objekt vorliegt, ansonsten GL_FALSE.
Es kann zu einer unbestimmten Verzögerung kommen, bevor das Ergebnis einer Occlusion-Query vorliegt.
Daher ist es sinnvoll, vor der Abfrage eines Occlusion-Query-Objektes zu prüfen, ob GL_QUERY_RESULT_AVAILABLE den Wert GL_TRUE zurückliefert.
Hinweise
glGetQueryObject ist erst ab OpenGL 1.5 oder höher verfügbar.
Für jede Occlusion-Query muss nach endlicher Zeit ein Query-Ergebnis vorliegen.
Ist für eine Query ein Ergebnis verfügbar, so muss für jede Occlusion-Query, die vor dieser mit glBeginQuery/glEndQuery definiert wurde, GL_QUERY_RESULT_AVAILABLE gleich GL_TRUE sein.
Falls mehrere Queries mit demselben target-Wert und derselben Id vor getQueryObject erstellt wurden, wird sich das zurückgegebene Ergebnis immer auf die zuletzt erstellte Query beziehen. Die Ergebnisse aller Queries vor der zuletzt definierten gehen verloren, falls kein Ergebnis abgefragt wurde, bevor eine neue Query mit demselben target-Wert und derselben Id erstellt wurde.
glGetQueryObjecti64v und glGetQueryObjectui64v sind nur verfügbar wenn die OpenGL Version 3.3 oder größer ist.
Fehlermeldungen
GL_INVALID_ENUM wird generiert wenn pname kein gültiger Wert ist.
GL_INVALID_OPERATION: id ist keine zulässige Id eines Query-Objektes oder das abzufragende Query-Objekt ist noch aktiv (ein Query-Objekt ist aktiv, wenn es mit glBeginQuery gestartet, aber noch nicht mit glEndQuery abgeschlossen wurde).
GL_INVALID_OPERATION wird generiert wenn glGetQueryObject zwischen glBegin und glEnd aufgerufen wird.
Zugehörige Wertrückgaben
glGetQuery mit Token GL_CURRENT_QUERY gibt die momentan aktive Query-ID zurück.
glGetQuery mit Token GL_QUERY_COUNTER_BITS gibt die Anzahl der Bits des Occlusion-Query-Zählers zurück.
Siehe auch
glBeginQuery, glDeleteQueries, glEndQuery, glGenQueries, glGetQuery, glIsQuery