glGetQueryObject: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
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_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_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

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