| '''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 ) |
|
|
|
|
| |