Download lib/python3.9/site-packages/OpenGL/GLX/ARB/vertex_buffer_object.py from camenduru/slahmr-test: direct link, hf CLI and curl.
- Browser
- Download file 3.94 kB
-
https://huggingface.co/camenduru/slahmr-test/resolve/main/lib/python3.9/site-packages/OpenGL/GLX/ARB/vertex_buffer_object.py
- Command line
-
hf download hf://camenduru/slahmr-test/lib/python3.9/site-packages/OpenGL/GLX/ARB/vertex_buffer_object.py
-
curl -L -o vertex_buffer_object.py https://huggingface.co/camenduru/slahmr-test/resolve/main/lib/python3.9/site-packages/OpenGL/GLX/ARB/vertex_buffer_object.py
3.94 kB
| '''OpenGL extension ARB.vertex_buffer_object | |
| This module customises the behaviour of the | |
| OpenGL.raw.GLX.ARB.vertex_buffer_object to provide a more | |
| Python-friendly API | |
| Overview (from the spec) | |
| This extension defines an interface that allows various types of data | |
| (especially vertex array data) to be cached in high-performance | |
| graphics memory on the server, thereby increasing the rate of data | |
| transfers. | |
| Chunks of data are encapsulated within "buffer objects", which | |
| conceptually are nothing more than arrays of bytes, just like any | |
| chunk of memory. An API is provided whereby applications can read | |
| from or write to buffers, either via the GL itself (glBufferData, | |
| glBufferSubData, glGetBufferSubData) or via a pointer to the memory. | |
| The latter technique is known as "mapping" a buffer. When an | |
| application maps a buffer, it is given a pointer to the memory. When | |
| the application finishes reading from or writing to the memory, it is | |
| required to "unmap" the buffer before it is once again permitted to | |
| use that buffer as a GL data source or sink. Mapping often allows | |
| applications to eliminate an extra data copy otherwise required to | |
| access the buffer, thereby enhancing performance. In addition, | |
| requiring that applications unmap the buffer to use it as a data | |
| source or sink ensures that certain classes of latent synchronization | |
| bugs cannot occur. | |
| Although this extension only defines hooks for buffer objects to be | |
| used with OpenGL's vertex array APIs, the API defined in this | |
| extension permits buffer objects to be used as either data sources or | |
| sinks for any GL command that takes a pointer as an argument. | |
| Normally, in the absence of this extension, a pointer passed into the | |
| GL is simply a pointer to the user's data. This extension defines | |
| a mechanism whereby this pointer is used not as a pointer to the data | |
| itself, but as an offset into a currently bound buffer object. The | |
| buffer object ID zero is reserved, and when buffer object zero is | |
| bound to a given target, the commands affected by that buffer binding | |
| behave normally. When a nonzero buffer ID is bound, then the pointer | |
| represents an offset. | |
| In the case of vertex arrays, this extension defines not merely one | |
| binding for all attributes, but a separate binding for each | |
| individual attribute. As a result, applications can source their | |
| attributes from multiple buffers. An application might, for example, | |
| have a model with constant texture coordinates and variable geometry. | |
| The texture coordinates might be retrieved from a buffer object with | |
| the usage mode "STATIC_DRAW", indicating to the GL that the | |
| application does not expect to update the contents of the buffer | |
| frequently or even at all, while the vertices might be retrieved from | |
| a buffer object with the usage mode "STREAM_DRAW", indicating that | |
| the vertices will be updated on a regular basis. | |
| In addition, a binding is defined by which applications can source | |
| index data (as used by DrawElements, DrawRangeElements, and | |
| MultiDrawElements) from a buffer object. On some platforms, this | |
| enables very large models to be rendered with no more than a few | |
| small commands to the graphics device. | |
| It is expected that a future extension will allow sourcing pixel data | |
| from and writing pixel data to a buffer object. | |
| The official definition of this extension is available here: | |
| http://www.opengl.org/registry/specs/ARB/vertex_buffer_object.txt | |
| ''' | |
| from OpenGL import platform, constant, arrays | |
| from OpenGL import extensions, wrapper | |
| import ctypes | |
| from OpenGL.raw.GLX import _types, _glgets | |
| from OpenGL.raw.GLX.ARB.vertex_buffer_object import * | |
| from OpenGL.raw.GLX.ARB.vertex_buffer_object import _EXTENSION_NAME | |
| def glInitVertexBufferObjectARB(): | |
| '''Return boolean indicating whether this extension is available''' | |
| from OpenGL import extensions | |
| return extensions.hasGLExtension( _EXTENSION_NAME ) | |
| ### END AUTOGENERATED SECTION |