| | '''OpenGL extension EXT.paletted_texture |
| | |
| | This module customises the behaviour of the |
| | OpenGL.raw.GL.EXT.paletted_texture to provide a more |
| | Python-friendly API |
| | |
| | Overview (from the spec) |
| | |
| | EXT_paletted_texture defines new texture formats and new calls to |
| | support the use of paletted textures in OpenGL. A paletted texture is |
| | defined by giving both a palette of colors and a set of image data which |
| | is composed of indices into the palette. The paletted texture cannot |
| | function properly without both pieces of information so it increases the |
| | work required to define a texture. This is offset by the fact that the |
| | overall amount of texture data can be reduced dramatically by factoring |
| | redundant information out of the logical view of the texture and placing |
| | it in the palette. |
| | |
| | Paletted textures provide several advantages over full-color textures: |
| | |
| | * As mentioned above, the amount of data required to define a |
| | texture can be greatly reduced over what would be needed for full-color |
| | specification. For example, consider a source texture that has only 256 |
| | distinct colors in a 256 by 256 pixel grid. Full-color representation |
| | requires three bytes per pixel, taking 192K of texture data. By putting |
| | the distinct colors in a palette only eight bits are required per pixel, |
| | reducing the 192K to 64K plus 768 bytes for the palette. Now add an |
| | alpha channel to the texture. The full-color representation increases |
| | by 64K while the paletted version would only increase by 256 bytes. |
| | This reduction in space required is particularly important for hardware |
| | accelerators where texture space is limited. |
| | |
| | * Paletted textures allow easy reuse of texture data for images |
| | which require many similar but slightly different colored objects. |
| | Consider a driving simulation with heavy traffic on the road. Many of |
| | the cars will be similar but with different color schemes. If |
| | full-color textures are used a separate texture would be needed for each |
| | color scheme, while paletted textures allow the same basic index data to |
| | be reused for each car, with a different palette to change the final |
| | colors. |
| | |
| | * Paletted textures also allow use of all the palette tricks |
| | developed for paletted displays. Simple animation can be done, along |
| | with strobing, glowing and other palette-cycling effects. All of these |
| | techniques can enhance the visual richness of a scene with very little |
| | data. |
| | |
| | The official definition of this extension is available here: |
| | http://www.opengl.org/registry/specs/EXT/paletted_texture.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.EXT.paletted_texture import * |
| | from OpenGL.raw.GL.EXT.paletted_texture import _EXTENSION_NAME |
| |
|
| | def glInitPalettedTextureEXT(): |
| | '''Return boolean indicating whether this extension is available''' |
| | from OpenGL import extensions |
| | return extensions.hasGLExtension( _EXTENSION_NAME ) |
| |
|
| | |
| | glColorTableEXT=wrapper.wrapper(glColorTableEXT).setInputArraySize( |
| | 'table', None |
| | ) |
| | |
| | glGetColorTableParameterivEXT=wrapper.wrapper(glGetColorTableParameterivEXT).setOutput( |
| | 'params',size=_glgets._glget_size_mapping,pnameArg='pname',orPassIn=True |
| | ) |
| | glGetColorTableParameterfvEXT=wrapper.wrapper(glGetColorTableParameterfvEXT).setOutput( |
| | 'params',size=_glgets._glget_size_mapping,pnameArg='pname',orPassIn=True |
| | ) |
| | |