| | '''OpenGL extension ARB.depth_clamp |
| | |
| | This module customises the behaviour of the |
| | OpenGL.raw.GL.ARB.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/ARB/depth_clamp.txt |
| | ''' |
| | from OpenGL import platform, constant, arrays |
| | from OpenGL import extensions, wrapper |
| | import ctypes |
| | from OpenGL.raw.GL import _types, _glgets |
| | from OpenGL.raw.GL.ARB.depth_clamp import * |
| | from OpenGL.raw.GL.ARB.depth_clamp import _EXTENSION_NAME |
| |
|
| | def glInitDepthClampARB(): |
| | '''Return boolean indicating whether this extension is available''' |
| | from OpenGL import extensions |
| | return extensions.hasGLExtension( _EXTENSION_NAME ) |
| |
|
| |
|
| | |