|
'''OpenGL extension EXT.depth_clamp |
|
|
|
This module customises the behaviour of the |
|
OpenGL.raw.GLES2.EXT.depth_clamp to provide a more |
|
Python-friendly API |
|
|
|
Overview (from the spec) |
|
|
|
Conventional OpenGL clips geometric primitives to a clip volume |
|
with six faces, two of which are the near and far clip planes. |
|
Clipping to the near and far planes of the clip volume ensures that |
|
interpolated depth values (after the depth range transform) must be |
|
in the [0,1] range. |
|
|
|
In some rendering applications such as shadow volumes, it is useful |
|
to allow line and polygon primitives to be rasterized without |
|
clipping the primitive to the near or far clip volume planes (side |
|
clip volume planes clip normally). Without the near and far clip |
|
planes, rasterization (pixel coverage determination) in X and Y |
|
can proceed normally if we ignore the near and far clip planes. |
|
The one major issue is that fragments of a primitive may extend |
|
beyond the conventional window space depth range for depth values |
|
(typically the range [0,1]). Rather than discarding fragments that |
|
defy the window space depth range (effectively what near and far |
|
plane clipping accomplish), the depth values can be clamped to the |
|
current depth range. |
|
|
|
This extension provides exactly such functionality. This |
|
functionality is useful to obviate the need for near plane capping |
|
of stenciled shadow volumes. The functionality may also be useful |
|
for rendering geometry "beyond" the far plane if an alternative |
|
algorithm (rather than depth testing) for hidden surface removal is |
|
applied to such geometry (specifically, the painter's algorithm). |
|
Similar situations at the near clip plane can be avoided at the |
|
near clip plane where apparently solid objects can be "seen through" |
|
if they intersect the near clip plane. |
|
|
|
The official definition of this extension is available here: |
|
http://www.opengl.org/registry/specs/EXT/depth_clamp.txt |
|
''' |
|
from OpenGL import platform, constant, arrays |
|
from OpenGL import extensions, wrapper |
|
import ctypes |
|
from OpenGL.raw.GLES2 import _types, _glgets |
|
from OpenGL.raw.GLES2.EXT.depth_clamp import * |
|
from OpenGL.raw.GLES2.EXT.depth_clamp import _EXTENSION_NAME |
|
|
|
def glInitDepthClampEXT(): |
|
'''Return boolean indicating whether this extension is available''' |
|
from OpenGL import extensions |
|
return extensions.hasGLExtension( _EXTENSION_NAME ) |
|
|
|
|
|
|