1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
'''OpenGL extension OES.extended_matrix_palette
This module customises the behaviour of the
OpenGL.raw.GLES1.OES.extended_matrix_palette to provide a more
Python-friendly API
Overview (from the spec)
The OES_matrix_palette extension added the ability to support vertex skinning
in OpenGL ES. One issue with OES_matrix_palette is that the minimum size of
the matrix palette is very small. This leads to applications having to break
geometry into smaller primitive sets called via. glDrawElements. This has an
impact on the overall performance of the OpenGL ES implementation. In general,
hardware implementations prefer primitive packets with as many triangles as
possible. The default minimum size defined in OES_matrix_palette is not
sufficient to allow this. The OES_extended_matrix_palette extension increases
this minimum from 9 to 32.
Another issue is that it is very difficult for ISVs to handle different
size matrix palettes as it affects how they store their geometry
in the database - may require multiple representations which is
not really feasible. So the minimum size is going to be what most ISVs
will use.
By extending the minimum size of the matrix palette, we remove this
fragmentation and allow applications to render geometry with minimal
number of calls to glDrawElements or glDrawArrays. The OpenGL ES
implementation can support this without requiring any additional hardware
by breaking the primitive, plus it gives implementations the flexibility
to accelerate with a bigger matrix palette if they choose to do so.
Additionally, feedback has also been received to increase the number of
matrices that are blend per vertex from 3 to 4. The OES_extended_matrix_palette
extension increases the minium number of matrices / vertex to 4.
The official definition of this extension is available here:
http://www.opengl.org/registry/specs/OES/extended_matrix_palette.txt
'''
from OpenGL import platform, constant, arrays
from OpenGL import extensions, wrapper
import ctypes
from OpenGL.raw.GLES1 import _types, _glgets
from OpenGL.raw.GLES1.OES.extended_matrix_palette import *
from OpenGL.raw.GLES1.OES.extended_matrix_palette import _EXTENSION_NAME
def glInitExtendedMatrixPaletteOES():
'''Return boolean indicating whether this extension is available'''
from OpenGL import extensions
return extensions.hasGLExtension( _EXTENSION_NAME )
### END AUTOGENERATED SECTION
|