'''OpenGL extension SGIS.pixel_texture

This module customises the behaviour of the 
OpenGL.raw.GL.SGIS.pixel_texture to provide a more 
Python-friendly API

Overview (from the spec)
	
	The geometry rasterization and pixel pipeline "convert to fragment"
	stages each produce fragments.  The fragments are processed by
	a unified per fragment pipeline that begins with the application
	of the texture to the fragment color.  Because the pixel pipeline
	shares the per fragment processing with the geometry pipeline, the
	fragments produced by the pixel pipeline must have the same fields
	as the ones produced by the geometry pipeline.  When
	pixel groups are being converted to fragments, the parts 
	of the fragment that aren't derived from the pixel groups 
	are taken from the associated values in the current raster position.
	
	A fragment consists of x and y window coordinates and their
	associated color value, depth value, and texture coordinates.
	In the 1.1 OpenGL specification, when the pixel group is RGBA
	the fragment color is always derived from the pixel group, 
	and the depth value and texture coordinates always come 
	from the raster position.
	
	This extension provides a way to specify how the texture coordinates
	of the fragments can be derived from RGBA pixel groups.  When
	this option is enabled, the source of the fragment color value
	when the pixel group is RGBA can be specified to come from either 
	the raster position or the pixel group.
	
	Deriving the fragment texture coordinates from the pixel group
	effectively converts a color image into a texture coordinate image.
	The multidimensional texture mapping lookup logic also makes this
	extension useful for implementing multidimensional color lookups.
	Multidimensional color lookups can be used to implement very
	accurate color space conversions.
	
	Deriving texture coordinates from the pixel groups in the pixel
	pipeline introduces a problem with the lambda parameter in the
	texture mapping equations.  When texture coordinates are
	being taken from the current raster position texture coordinates,
	the texture coordinate values don't change from pixel to pixel,
	and the equation for calculating lambda always produces zero.
	Enabling pixel_texture introduces changes in the texture
	coordinates from pixel to pixel which are not necessarily
	meaningful for texture lookups.  This problem is addressed
	by specifying that lambda is always set to zero when pixel_texture 
	is enabled.  

The official definition of this extension is available here:
http://www.opengl.org/registry/specs/SGIS/pixel_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.SGIS.pixel_texture import *
from OpenGL.raw.GL.SGIS.pixel_texture import _EXTENSION_NAME

def glInitPixelTextureSGIS():
    '''Return boolean indicating whether this extension is available'''
    from OpenGL import extensions
    return extensions.hasGLExtension( _EXTENSION_NAME )

# INPUT glPixelTexGenParameterivSGIS.params size not checked against 'pname'
glPixelTexGenParameterivSGIS=wrapper.wrapper(glPixelTexGenParameterivSGIS).setInputArraySize(
    'params', None
)
# INPUT glPixelTexGenParameterfvSGIS.params size not checked against 'pname'
glPixelTexGenParameterfvSGIS=wrapper.wrapper(glPixelTexGenParameterfvSGIS).setInputArraySize(
    'params', None
)
glGetPixelTexGenParameterivSGIS=wrapper.wrapper(glGetPixelTexGenParameterivSGIS).setOutput(
    'params',size=_glgets._glget_size_mapping,pnameArg='pname',orPassIn=True
)
glGetPixelTexGenParameterfvSGIS=wrapper.wrapper(glGetPixelTexGenParameterfvSGIS).setOutput(
    'params',size=_glgets._glget_size_mapping,pnameArg='pname',orPassIn=True
)
### END AUTOGENERATED SECTION