GL_HP_occlusion_test - PRELIMINARY ---------------------------------- XXX - Not complete yet!!! |
HP_occlusion_test
GL_HP_occlusion_test
137
This extension defines a mechanism whereby an application can
determine the non-visibility of some set of geometry based on
whether an encompassing set of geometry is non-visible. In general
this feature does not guarantee that the target geometry is visible
when the test fails, but is accurate with regard to non-visibility.
Occlusion culling allows an application to render some geometry and
at the completion of the rendering to determine if any of the
geometry could or did modify the depth buffer, ie. a depth buffer
test succeeded. The idea being that if the application renders a
bounding box of some geometry in this mode and the occlusion test
failed (ie. the bounding box was depth culled due to the current
contents of the depth buffer) then the geometry enclosed by the
bounding box would also be depth culled. Occlusion culling operates
independently of the current rendering state (ie. when occlusion
culling is enabled fragments are generated and the depth and/or
color buffer may be updated). To prevent updating the depth/color
buffers the application must disable updates to these buffers. As a
side effect of reading the occlusion result the internal result
state is cleared, setting it up for a new bounding box test.
The expected usage of this feature is :
- disable updates to color and depth buffer (optional)
glDepthMask(GL_FALSE)
glColorMask(GL_FALSE,GL_FALSE,GL_FALSE,GL_FALSE)
- enable occlusion test
glEnable(GL_OCCLUSION_TEST_HP)
- render bounding geometry
gl rendering calls
- disable occlusion test
glDisable(GL_OCCLUSION_TEST_HP)
- enable updates to color and depth buffer
glDepthMask(GL_TRUE)
glColorMask(GL_TRUE,GL_TRUE,GL_TRUE,GL_TRUE)
- read occlusion test result
glGetBooleanv(GL_OCCLUSION_TEST_RESULT_HP, &result)
- if (result) render internal geometry
else don't render
For this extension to be useful the assumption are being made :
- the time to render the geometry under test is much more than
rendering the encompassing geometry, including reading back
the test result
- the application is modelling data that includes occluding
structures (eg. walls, hierarchial assemblies, ...)
- the application is structured in such a way as to utilize
bounding boxes for encompassing geometry
New Procedures and Functions |
none
Accepted by the <cap> parameter of Enable, Disable, and IsEnabled,
by the <pname> of GetBooleanv, GetIntegerv, GetFloatv, and
GetDoublev :
GL_OCCLUSION_TEST_HP 0x8165
Accepted by the <pname> of GetBooleanv, GetIntegerv, GetFloatv, and
GetDoublev :
GL_OCCLUSION_TEST_RESULT_HP 0x8166
Boolean result of occlusion test, initial value of FALSE. The
result is set to FALSE as a side effect of reading it (executing a
Get call).
Issue
This extension is superceded by the GL_HP_visibility_test extension.
Also see NVIDIA's NV_occlusion_query extension.
Also see NVIDIA's NV_occlusion_query extension.
| | Last update: November 14, 2006. Cette page doit être lue avec un navigateur récent respectant le standard XHTML 1.1. |