glBeginQuery: Unterschied zwischen den Versionen
K (→Siehe auch) |
|||
(2 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 2: | Zeile 2: | ||
== Name == | == Name == | ||
− | '''glBeginQuery''' - Kennzeichnet den Anfang einer [[Occlusion Query]]. | + | '''glBeginQuery''' - Kennzeichnet den Anfang einer [[Occlusion Query]]. |
+ | |||
'''glEndQuery''' - Kennzeichnet das Ende einer [[Occlusion Query]]. | '''glEndQuery''' - Kennzeichnet das Ende einer [[Occlusion Query]]. | ||
Zeile 8: | Zeile 9: | ||
== Delphi-Spezifikation == | == Delphi-Spezifikation == | ||
− | procedure '''glBeginQuery'''(''target'' : GLenum; ''id'' : GLuint); | + | procedure '''glBeginQuery'''(''target'' : GLenum; ''id'' : GLuint); |
procedure '''glEndQuery'''(''target'' : GLenum); | procedure '''glEndQuery'''(''target'' : GLenum); | ||
Zeile 37: | Zeile 38: | ||
OpenGL-Implementationen ist es jedoch nach ihrem eigenen Ermessen erlaubt, stattdessen den Sample-Zähler um den Wert von '''GL_SAMPLES''' zu erhöhen, falls irgendein [[Sample]] im Fragment überdeckt wird. Falls der Sample-Zähler überläuft, z.B. den Wert 2<sup>n</sup> - 1 überschreitet (wobei n die Anzahl der Bits des Zählers ist), wird sein Wert undefiniert. | OpenGL-Implementationen ist es jedoch nach ihrem eigenen Ermessen erlaubt, stattdessen den Sample-Zähler um den Wert von '''GL_SAMPLES''' zu erhöhen, falls irgendein [[Sample]] im Fragment überdeckt wird. Falls der Sample-Zähler überläuft, z.B. den Wert 2<sup>n</sup> - 1 überschreitet (wobei n die Anzahl der Bits des Zählers ist), wird sein Wert undefiniert. | ||
OpenGL-Implementationen können, müssen jedoch nicht, diesen Überlauf behandeln. | OpenGL-Implementationen können, müssen jedoch nicht, diesen Überlauf behandeln. | ||
+ | |||
+ | |||
== Hinweise == | == Hinweise == | ||
'''glGenQueries''' ist erst ab OpenGL 1.5 oder höher verfügbar. | '''glGenQueries''' ist erst ab OpenGL 1.5 oder höher verfügbar. | ||
+ | |||
+ | |||
== Fehlermeldungen == | == Fehlermeldungen == | ||
Zeile 46: | Zeile 51: | ||
;'''GL_INVALID_OPERATION''': '''glBeginQuery''' wurde mit ''id'' gleich 0 aufgerufen, während eine andere Query mit demselben ''target''-Wert ausgeführt wird oder ''id'' gleich dem Namen einer aktuell ausgeführten Query ist. | ;'''GL_INVALID_OPERATION''': '''glBeginQuery''' wurde mit ''id'' gleich 0 aufgerufen, während eine andere Query mit demselben ''target''-Wert ausgeführt wird oder ''id'' gleich dem Namen einer aktuell ausgeführten Query ist. | ||
− | ;'''GL_INVALID_OPERATION''': '''glEndQuery''' wurde aufgerufen, ohne dass eine Query mit demselben ''target''-Wert gestartet wurde. | + | ;'''GL_INVALID_OPERATION''': '''glEndQuery''' wurde aufgerufen, ohne dass eine Query mit demselben ''target''-Wert gestartet wurde. |
+ | |||
+ | |||
== Zugehörige Wertrückgaben == | == Zugehörige Wertrückgaben == | ||
− | [[glGetQuery]] mit Token '''GL_CURRENT_QUERY''' gibt die momentan aktive Query-ID zurück. | + | [[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. | + | |
+ | [[glGetQuery]] mit Token '''GL_QUERY_COUNTER_BITS''' gibt die Anzahl der Bits des Occlusion-Query-Zählers zurück. | ||
+ | |||
+ | |||
== Siehe auch == | == Siehe auch == | ||
Zeile 56: | Zeile 66: | ||
[[Kategorie:GL|BeginQuery]] | [[Kategorie:GL|BeginQuery]] | ||
+ | [[Kategorie:GL1.5|BeginQuery]] | ||
+ | [[Kategorie:GL3|BeginQuery]] |
Aktuelle Version vom 21. Februar 2014, 17:46 Uhr
Inhaltsverzeichnis
glBeginQuery, glEndQuery
Name
glBeginQuery - Kennzeichnet den Anfang einer Occlusion Query.
glEndQuery - Kennzeichnet das Ende einer Occlusion Query.
Delphi-Spezifikation
procedure glBeginQuery(target : GLenum; id : GLuint); procedure glEndQuery(target : GLenum);
Parameter
target | Muss GL_SAMPLES_PASSED sein. |
---|---|
id | Name des Query-Objektes, welches neu begonnen werden soll. |
Beschreibung
Eine Occlusion Query wird mit glBeginQuery gestartet und mit glEndQuery beendet, wobei der Parameter target stets GL_SAMPLES_PASSED sein muss. Falls glBeginQuery mit einer unbenutzten id aufgerufen wird, wird dieser Name als benutzt gekennzeichnet und einem neuen Query-Objekt zugewiesen.
glBeginQuery mit dem target GL_SAMPLES_PASSED setzt den aktuellen Sample-Zähler auf 0 zurück, die interne Variable Aktivstatus auf GL_TRUE und die aktive Query-ID auf id.
glEndQuery mit target GL_SAMPLES PASSED initialisiert eine Kopie der aktuellen Sample-Pass-Zahl in den Ergebniswert des aktiven Query-Objektes, setzt die Erreichbarkeit des aktiven Occlusion-Query-Objekt Ergebnisses auf GL_FALSE (siehe glGetQueryObject), setzt Aktivstatus auf GL_FALSE (d.h. das aktuelle Query-Objekt ist nicht mehr aktiv) und die aktive Query-Id auf 0.
Wenn eine Occlusion-Query aktiv ist, erhöht sich für jedes Fragment, welches den Tiefentest besteht, der Sample-Zähler um einen bestimmten Wert.
Falls der Wert von GL_SAMPLE_BUFFERS 0 ist, erhöht sich für jedes Fragment der Sample-Zähler um den Wert 1.
Falls der Wert von GL_SAMPLE_BUFFERS 1 ist, erhöht sich der Sample-Zähler um die Anzahl der Samples, dessen Überdeckungs-Bit gesetzt ist.
OpenGL-Implementationen ist es jedoch nach ihrem eigenen Ermessen erlaubt, stattdessen den Sample-Zähler um den Wert von GL_SAMPLES zu erhöhen, falls irgendein Sample im Fragment überdeckt wird. Falls der Sample-Zähler überläuft, z.B. den Wert 2n - 1 überschreitet (wobei n die Anzahl der Bits des Zählers ist), wird sein Wert undefiniert. OpenGL-Implementationen können, müssen jedoch nicht, diesen Überlauf behandeln.
Hinweise
glGenQueries ist erst ab OpenGL 1.5 oder höher verfügbar.
Fehlermeldungen
- GL_INVALID_ENUM
- target ist nicht GL_SAMPLES_PASSED.
- GL_INVALID_OPERATION
- glBeginQuery wurde mit id gleich 0 aufgerufen, während eine andere Query mit demselben target-Wert ausgeführt wird oder id gleich dem Namen einer aktuell ausgeführten Query ist.
- GL_INVALID_OPERATION
- glEndQuery wurde aufgerufen, ohne dass eine Query mit demselben target-Wert gestartet 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
glDeleteQueries, glGenQueries, glGetQuery, glGetQueryObject, glIsQuery