| | '''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 ) |
| |
|
| |
|
| | |