OpenGL.raw.GL.ARB.occlusion_query
index
/build/buildd/pyopengl-3.0.0~b6/OpenGL/raw/GL/ARB/occlusion_query.py

OpenGL extension ARB.occlusion_query
 
Overview (from the spec)
        
        This extension defines a mechanism whereby an application can query
        the number of pixels (or, more precisely, samples) drawn by a
        primitive or group of primitives.
        
        The primary purpose of such a query (hereafter referred to as an
        "occlusion query") is to determine the visibility of an object.
        Typically, the application will render the major occluders in the
        scene, then perform an occlusion query for the bounding box of each
        detail object in the scene.  Only if said bounding box is visible,
        i.e., if at least one sample is drawn, should the corresponding object
        be drawn.
        
        The earlier HP_occlusion_test extension defined a similar mechanism,
        but it had two major shortcomings.
        
        - It returned the result as a simple GL_TRUE/GL_FALSE result, when in
          fact it is often useful to know exactly how many samples were
          drawn.
        - It provided only a simple "stop-and-wait" model for using multiple
          queries.  The application begins an occlusion test and ends it;
          then, at some later point, it asks for the result, at which point
          the driver must stop and wait until the result from the previous
          test is back before the application can even begin the next one.
          This is a very simple model, but its performance is mediocre when
          an application wishes to perform many queries, and it eliminates
          most of the opportunities for parallelism between the CPU and GPU.
        
        This extension solves both of those problems.  It returns as its
        result the number of samples that pass the depth and stencil tests,
        and it encapsulates occlusion queries in "query objects" that allow
        applications to issue many queries before asking for the result of
        any one.  As a result, they can overlap the time it takes for the
        occlusion query results to be returned with other, more useful work,
        such as rendering other parts of the scene or performing other
        computations on the CPU.
        
        There are many situations where a pixel/sample count, rather than a
        boolean result, is useful.
        
        - Objects that are visible but cover only a very small number of
          pixels can be skipped at a minimal reduction of image quality.
        - Knowing exactly how many pixels an object might cover may help the
          application decide which level-of-detail model should be used.  If
          only a few pixels are visible, a low-detail model may be
          acceptable.
        - "Depth peeling" techniques, such as order-independent transparency,
          need to know when to stop rendering more layers; it is difficult to
          determine a priori how many layers are needed.  A boolean result
          allows applications to stop when more layers will not affect the
          image at all, but this will likely result in unacceptable
          performance.  Instead, it makes more sense to stop rendering when
          the number of pixels in each layer falls below a given threshold.
        - Occlusion queries can replace glReadPixels of the depth buffer to
          determine whether (for example) a light source is visible for the
          purposes of a lens flare effect or a halo to simulate glare.  Pixel
          counts allow you to compute the percentage of the light source that
          is visible, and the brightness of these effects can be modulated
          accordingly.
 
The official definition of this extension is available here:
        http://oss.sgi.com/projects/ogl-sample/registry/ARB/occlusion_query.txt
 
Automatically generated by the get_gl_extensions script, do not edit!

 
Modules
       
OpenGL.arrays
OpenGL.constant
OpenGL.constants
ctypes
OpenGL.extensions
OpenGL.GL.glget
OpenGL.platform

 
Functions
       
glInitOcclusionQueryARB()
Return boolean indicating whether this extension is available

 
Data
        EXTENSION_NAME = 'GL_ARB_occlusion_query'
GL_CURRENT_QUERY_ARB = GL_CURRENT_QUERY_ARB
GL_QUERY_COUNTER_BITS_ARB = GL_QUERY_COUNTER_BITS_ARB
GL_QUERY_RESULT_ARB = GL_QUERY_RESULT_ARB
GL_QUERY_RESULT_AVAILABLE_ARB = GL_QUERY_RESULT_AVAILABLE_ARB
GL_SAMPLES_PASSED_ARB = GL_SAMPLES_PASSED_ARB
__file__ = '/build/buildd/pyopengl-3.0.0~b6/OpenGL/raw/GL/ARB/occlusion_query.py'
__name__ = 'OpenGL.raw.GL.ARB.occlusion_query'
glBeginQueryARB = <OpenGL.platform.baseplatform.glBeginQueryARB object at 0x8873eac>
glDeleteQueriesARB = <OpenGL.platform.baseplatform.glDeleteQueriesARB object at 0x8873e0c>
glEndQueryARB = <OpenGL.platform.baseplatform.glEndQueryARB object at 0x8873f0c>
glGenQueriesARB = <OpenGL.platform.baseplatform.glGenQueriesARB object at 0x8873d8c>
glGetQueryObjectivARB = <OpenGL.platform.baseplatform.glGetQueryObjectivARB object at 0x8873f8c>
glGetQueryObjectuivARB = <OpenGL.platform.baseplatform.glGetQueryObjectuivARB object at 0x8873fcc>
glGetQueryivARB = <OpenGL.platform.baseplatform.glGetQueryivARB object at 0x8873f4c>
glIsQueryARB = <OpenGL.platform.baseplatform.glIsQueryARB object at 0x8873e6c>