OpenGL.GL.APPLE.row_bytes
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
Functions
Constants
GL_PACK_ROW_BYTES_APPLE (35349)
GL_UNPACK_ROW_BYTES_APPLE (35350)