Download lib/python3.9/site-packages/OpenGL/GL/NV/geometry_program4.py from camenduru/slahmr-test: direct link, hf CLI and curl.
- Browser
- Download file 3.31 kB
-
https://huggingface.co/camenduru/slahmr-test/resolve/main/lib/python3.9/site-packages/OpenGL/GL/NV/geometry_program4.py
- Command line
-
hf download hf://camenduru/slahmr-test/lib/python3.9/site-packages/OpenGL/GL/NV/geometry_program4.py
-
curl -L -o geometry_program4.py https://huggingface.co/camenduru/slahmr-test/resolve/main/lib/python3.9/site-packages/OpenGL/GL/NV/geometry_program4.py
3.31 kB
| '''OpenGL extension NV.geometry_program4 | |
| This module customises the behaviour of the | |
| OpenGL.raw.GL.NV.geometry_program4 to provide a more | |
| Python-friendly API | |
| Overview (from the spec) | |
| NV_geometry_program4 defines a new type of program available to be run on | |
| the GPU, called a geometry program. Geometry programs are run on full | |
| primitives after vertices are transformed, but prior to flat shading and | |
| clipping. | |
| A geometry program begins with a single primitive - a point, line, or | |
| triangle. Quads and polygons are allowed, but are decomposed into | |
| individual triangles prior to geometry program execution. It can read the | |
| attributes of any of the vertex in the primitive and use them to generate | |
| new primitives. A geometry program has a fixed output primitive type, | |
| either a point, a line strip, or a triangle strip. It emits vertices | |
| (using the EMIT opcode) to define the output primitive. The attributes of | |
| emitted vertices are specified by writing to the same set of result | |
| bindings (e.g., "result.position") provided for vertex programs. | |
| Additionally, a geometry program can emit multiple disconnected primitives | |
| by using the ENDPRIM opcode, which is roughly equivalent to calling End | |
| and then Begin again. The primitives emitted by the geometry program are | |
| then clipped and then processed like an equivalent OpenGL primitive | |
| specified by the application. | |
| This extension 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 "adjacency" vertices can be accessed by | |
| geometry programs and used to match up the outputs of the geometry program | |
| with those of neighboring primitives. | |
| Additionally, geometry programs allow for layered rendering, where entire | |
| three-dimensional, cube map, or array textures (EXT_texture_array) can be | |
| bound to the current framebuffer. Geometry programs can use the | |
| "result.layer" binding to select a layer or cube map face to render to. | |
| Each primitive emitted by such a geometry program is rendered to the layer | |
| taken from its provoking vertex. | |
| Since geometry programs expect a specific input primitive type, an error | |
| will occur if the application presents primtives of a different type. For | |
| example, if an enabled geometry program 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/NV/geometry_program4.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.NV.geometry_program4 import * | |
| from OpenGL.raw.GL.NV.geometry_program4 import _EXTENSION_NAME | |
| def glInitGeometryProgram4NV(): | |
| '''Return boolean indicating whether this extension is available''' | |
| from OpenGL import extensions | |
| return extensions.hasGLExtension( _EXTENSION_NAME ) | |
| ### END AUTOGENERATED SECTION |