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: