Download lib/python3.9/site-packages/OpenGL/GL/AMD/interleaved_elements.py from camenduru/slahmr-test: direct link, hf CLI and curl.
- Browser
- Download file 2.72 kB
-
https://huggingface.co/camenduru/slahmr-test/resolve/main/lib/python3.9/site-packages/OpenGL/GL/AMD/interleaved_elements.py
- Command line
-
hf download hf://camenduru/slahmr-test/lib/python3.9/site-packages/OpenGL/GL/AMD/interleaved_elements.py
-
curl -L -o interleaved_elements.py https://huggingface.co/camenduru/slahmr-test/resolve/main/lib/python3.9/site-packages/OpenGL/GL/AMD/interleaved_elements.py
2.72 kB
| '''OpenGL extension AMD.interleaved_elements | |
| This module customises the behaviour of the | |
| OpenGL.raw.GL.AMD.interleaved_elements to provide a more | |
| Python-friendly API | |
| Overview (from the spec) | |
| The glDrawElements function and its variants (instanced and indirect, | |
| for example) allow OpenGL to draw indexed arrays of vertices. Since its | |
| inception, OpenGL has supported unsigned bytes, unsigned shorts and | |
| unsigned integers as index types. However, all enabled vertex arrays may | |
| be represented by at most one shared index. | |
| A common scenario in graphics rendering is that several faces share | |
| a vertex where, for each face some properties of a vertex (position and | |
| texture coordinates, for example) should be common but others must be | |
| unique (colors, normals, and so on). Consider a mesh of a cube with | |
| per-face normals, for example. There are 8 vertices and 6 normals, and 12 | |
| triangles (where each face of the cube is represented as two triangles). | |
| To render this cube, we must compute the 24 unique permutations of | |
| position and normal and build a new element list to index into it. In | |
| fact, any advantage of indexed draw is lost here as the number of required | |
| permutations is equal to the final vertex count required to draw the | |
| object. | |
| This extension allows OpenGL to process multi-component packed element | |
| data. The maximum size of a vertex's index data is not increased, but the | |
| facility to store 2 16-bit or 2 or 4 8-bit indices per vertex is introduced. | |
| Each vertex attribute is given a swizzle property to allow its index to | |
| be sourced from one of up to 4 channels of index data. This effectively | |
| allows an application to supply multiple interleaved streams of index data | |
| to OpenGL. Each vertex attribute is given a 'channel selector' to select | |
| one of the up to 4 channels of vertex index information presented to | |
| OpenGL. This enables the use-case described above and many more. | |
| The swizzle parameter is also applied to vertex indices passed to shaders, | |
| and updates to the definition of base vertex parameters and primitive | |
| restart are applied. | |
| The official definition of this extension is available here: | |
| http://www.opengl.org/registry/specs/AMD/interleaved_elements.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.AMD.interleaved_elements import * | |
| from OpenGL.raw.GL.AMD.interleaved_elements import _EXTENSION_NAME | |
| def glInitInterleavedElementsAMD(): | |
| '''Return boolean indicating whether this extension is available''' | |
| from OpenGL import extensions | |
| return extensions.hasGLExtension( _EXTENSION_NAME ) | |
| ### END AUTOGENERATED SECTION |