glGetQueryObject

Aus DGL Wiki
Version vom 27. Juni 2006, 10:39 Uhr von Dj3hut1 (Diskussion | Beiträge) (Zusatz : was passiert, falls mehrere Queries mit demselben target und derselben Id definiert wurden?)

Wechseln zu: Navigation, Suche

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);

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.


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).

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