glBeginConditionalRender

Aus DGL Wiki
(Weitergeleitet von glEndConditionalRender)
Wechseln zu: Navigation, Suche

glBeginConditionalRender, glEndConditionalRender

Name

glBeginConditionalRender, glEndConditionalRender - Umschließen eine Abfolge an Befehlen, welche auf Basis eines Query-Objektes verworfen werden können.


Delphi-Spezifikation

procedure glBeginConditionalRender(id : GLuint; mode : GLenum);
procedure glEndConditionalRender;


Parameter

id Name des Query-Objektes, dessen Resultat zur Auswertung genutzt werden soll.
mode Bestimmt die Interpretation des Query-Resultats. Erlaubt sind die folgenden vier symbolischen Konstanten:

GL_QUERY_WAIT, GL_QUERY_NO_WAIT, GL_QUERY_BY_REGION_WAIT und GL_QUERY_BY_REGION_NO_WAIT.


Beschreibung

glBeginConditionalRender und glEndConditionalRender beginnen und beenden bedingtes Rendern auf Basis des in id übergebenen Query-Objektes. Der Parameter mode bestimmt, ob auf das Resultat der Query (falls noch nicht vorhanden) gewartet werden soll und ob Resultate von Zeichenoperationen in Bereichen des Framebuffers, welche nicht zum Query-Resultat beigetragen haben, verworfen werden sollen. Ist der GL_SAMPLES_PASSED-Wert der Query Null, oder der GL_ANY_SAMPLES_PASSED-Wert GL_FALSE, so werden sämtliche glDraw*- und glClear/glClearBuffer-Befehle im bedingen Rendern verworfen.

In Abhängigkeit von mode wird die Query wie folgt genutzt:

mode Beschreibung
GL_QUERY_WAIT Ist das Resultat der Query id nicht vorhanden, so wartet OpenGL bis das Resultat verfügbar ist (kann die Pipeline blockieren).
GL_QUERY_NO_WAIT Ist das Resultat der Query id nicht vorhanden, so kann OpenGL den bedingten Render-Block ohne zu warten bedingungslos ausführen.
GL_QUERY_BY_REGION_WAIT Wie GL_QUERY_WAIT, allerdings kann OpenGL Resultate des bedingten Renderns verwerfen, wenn diese in Bereichen des Framebuffers liegen, die nicht zum Resultat der Query id beigetragen haben.
GL_QUERY_BY_REGION_NO_WAIT Wie GL_QUERY_NO_WAIT, allerdings kann OpenGL Resultate des bedingten Renderns verwerfen, wenn diese in Bereichen des Framebuffers liegen, die nicht zum Resultat der Query id beigetragen haben.


Hinweise

Bedingtes Rendern ist erst ab Version 3.0 verfügbar (oder mittels Extension GL_NV_conditional_render (Befehle mit Suffix 'NV')).

GL_ANY_SAMPLES_PASSED ist erst ab Version 3.3 verfügbar.


Fehlermeldungen

GL_INVALID_VALUE wird generiert wenn id nicht der Name eines existierenden Query-Objektes ist.

GL_INVALID_ENUM wird generiert wenn mode einen ungültgen Wert hat.

GL_INVALID_OPERATION wird generiert wenn glBeginConditionalRender während aktivem bedingten Rendern aufgerufen wird oder wenn glEndConditionalRender aufgerufen wird, ohne dass bedingtes Rendern aktiv ist.

GL_INVALID_OPERATION wird generiert wenn das Ziel der Query id nicht GL_SAMPLES_PASSED oder GL_ANY_SAMPLES_PASSED.

GL_INVALID_OPERATION wird generiert wenn das Query-Objekt id aktiv ist.


Siehe auch

glGenQueries, glDeleteQueries, glBeginQuery