| '''OpenGL extension APPLE.row_bytes |
| |
| This module customises the behaviour of the |
| OpenGL.raw.GL.APPLE.row_bytes to provide a more |
| Python-friendly API |
| |
| Overview (from the spec) |
| |
| The APPLE_row_bytes extension was developed to relax the limitations |
| within GL regarding the packing and unpacking of pixel data from |
| arbitrary arrangements in memory. |
| |
| Prior to this extension, similar, albeit more restrictive, functionality |
| existed in GL using pixel storage modes for unpacking, packing, and |
| alignment. The limitation of the existing mechanism lies primarily in how |
| packing or unpacking of data is specified with pixel atomicity rather than |
| basic machine units. To some extent, this pixel granularity can be |
| overcome using pixel storage modes GL_UNPACK_ALIGNMENT and |
| GL_PACK_ALIGNMENT. Both of these parameters are specified in basic |
| machine units but their range of possible values is restricted and even |
| then they do not allow for the packing and unpacking of pixel data in a |
| fully arbitrary manner. |
| |
| Consider this simple example: |
| |
| Consider a column of pixels in memory. The pixels are of GL_RGB |
| format and GL_UNSIGNED_BYTE type resulting in 3 bytes per pixel. |
| Now consider that this column of pixel data was arranged in memory |
| such that each row of the image (in this case each pixel) has two |
| bytes padding or space between them. |
| |
| Each row of 1 pixel then has 5 bytes. An attempting to express this |
| memory arrangement with existing pixel storage semantics would |
| naturally start with a GL_UNPACK_ROW_LENGTH of 1 because there is |
| one pixel per row. However, no valid value of GL_UNPACK_ALIGNMENT, |
| 1, 2, 4, or 8, will allow the proper row padding to express this |
| memory arrangement. |
| |
| The official definition of this extension is available here: |
| http://www.opengl.org/registry/specs/APPLE/row_bytes.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.APPLE.row_bytes import * |
| from OpenGL.raw.GL.APPLE.row_bytes import _EXTENSION_NAME |
|
|
| def glInitRowBytesAPPLE(): |
| '''Return boolean indicating whether this extension is available''' |
| from OpenGL import extensions |
| return extensions.hasGLExtension( _EXTENSION_NAME ) |
|
|
|
|
| |