| | '''OpenGL extension EXT.geometry_shader4 |
| | |
| | This module customises the behaviour of the |
| | OpenGL.raw.GL.EXT.geometry_shader4 to provide a more |
| | Python-friendly API |
| | |
| | Overview (from the spec) |
| | |
| | EXT_geometry_shader4 defines a new shader type available to be run on the |
| | GPU, called a geometry shader. Geometry shaders are run after vertices are |
| | transformed, but prior to color clamping, flat shading and clipping. |
| | |
| | A geometry shader begins with a single primitive (point, line, |
| | triangle). It can read the attributes of any of the vertices in the |
| | primitive and use them to generate new primitives. A geometry shader has a |
| | fixed output primitive type (point, line strip, or triangle strip) and |
| | emits vertices to define a new primitive. A geometry shader can emit |
| | multiple disconnected primitives. The primitives emitted by the geometry |
| | shader are clipped and then processed like an equivalent OpenGL primitive |
| | specified by the application. |
| | |
| | Furthermore, EXT_geometry_shader4 provides four additional primitive |
| | types: lines with adjacency, line strips with adjacency, separate |
| | triangles with adjacency, and triangle strips with adjacency. Some of the |
| | vertices specified in these new primitive types are not part of the |
| | ordinary primitives, instead they represent neighboring vertices that are |
| | adjacent to the two line segment end points (lines/strips) or the three |
| | triangle edges (triangles/tstrips). These vertices can be accessed by |
| | geometry shaders and used to match up the vertices emitted by the geometry |
| | shader with those of neighboring primitives. |
| | |
| | Since geometry shaders expect a specific input primitive type, an error |
| | will occur if the application presents primitives of a different type. |
| | For example, if a geometry shader expects points, an error will occur at |
| | Begin() time, if a primitive mode of TRIANGLES is specified. |
| | |
| | The official definition of this extension is available here: |
| | http://www.opengl.org/registry/specs/EXT/geometry_shader4.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.EXT.geometry_shader4 import * |
| | from OpenGL.raw.GL.EXT.geometry_shader4 import _EXTENSION_NAME |
| |
|
| | def glInitGeometryShader4EXT(): |
| | '''Return boolean indicating whether this extension is available''' |
| | from OpenGL import extensions |
| | return extensions.hasGLExtension( _EXTENSION_NAME ) |
| |
|
| |
|
| | |