GLESv1 extensions

This fix adds support for OpenGLES 1.1 extensions in the codec
layer. This fix also includes bug fixes in GLEncoder (client-state)
and gles android wrapper modules.

Change-Id: I512649724d43e4af9d3ce5d49ae66d9f4da0b823
This commit is contained in:
Liran
2011-04-07 17:01:47 +03:00
parent 9e9b85c3f6
commit fb06a28c30
15 changed files with 896 additions and 68 deletions

View File

@@ -61,12 +61,16 @@ int GLDecoder::initGL(get_proc_func_t getProcFunc, void *getProcFuncData)
set_glNormalPointerOffset(s_glNormalPointerOffset);
set_glTexCoordPointerOffset(s_glTexCoordPointerOffset);
set_glPointSizePointerOffset(s_glPointSizePointerOffset);
set_glWeightPointerOffset(s_glWeightPointerOffset);
set_glMatrixIndexPointerOffset(s_glMatrixIndexPointerOffset);
set_glVertexPointerData(s_glVertexPointerData);
set_glColorPointerData(s_glColorPointerData);
set_glNormalPointerData(s_glNormalPointerData);
set_glTexCoordPointerData(s_glTexCoordPointerData);
set_glPointSizePointerData(s_glPointSizePointerData);
set_glWeightPointerData(s_glWeightPointerData);
set_glMatrixIndexPointerData(s_glMatrixIndexPointerData);
set_glDrawElementsOffset(s_glDrawElementsOffset);
set_glDrawElementsData(s_glDrawElementsData);
@@ -104,6 +108,20 @@ void GLDecoder::s_glPointSizePointerOffset(void *self, GLenum type, GLsizei stri
ctx->glPointSizePointerOES(type, stride, (void *)offset);
}
void GLDecoder::s_glWeightPointerOffset(void * self, GLint size, GLenum type, GLsizei stride, GLuint offset)
{
GLDecoder *ctx = (GLDecoder *)self;
ctx->glWeightPointerOES(size, type, stride, (void*)offset);
}
void GLDecoder::s_glMatrixIndexPointerOffset(void * self, GLint size, GLenum type, GLsizei stride, GLuint offset)
{
GLDecoder *ctx = (GLDecoder *)self;
ctx->glMatrixIndexPointerOES(size, type, stride, (void*)offset);
}
#define STORE_POINTER_DATA_OR_ABORT(location) \
if (ctx->m_contextData != NULL) { \
ctx->m_contextData->storePointerData((location), data, datalen); \
@@ -158,6 +176,24 @@ void GLDecoder::s_glPointSizePointerData(void *self, GLenum type, GLsizei stride
ctx->glPointSizePointerOES(type, 0, ctx->m_contextData->pointerData(GLDecoderContextData::POINTSIZE_LOCATION));
}
void GLDecoder::s_glWeightPointerData(void * self, GLint size, GLenum type, GLsizei stride, void * data, GLuint datalen)
{
GLDecoder *ctx = (GLDecoder *)self;
STORE_POINTER_DATA_OR_ABORT(GLDecoderContextData::WEIGHT_LOCATION);
ctx->glWeightPointerOES(size, type, 0, ctx->m_contextData->pointerData(GLDecoderContextData::WEIGHT_LOCATION));
}
void GLDecoder::s_glMatrixIndexPointerData(void * self, GLint size, GLenum type, GLsizei stride, void * data, GLuint datalen)
{
GLDecoder *ctx = (GLDecoder *)self;
STORE_POINTER_DATA_OR_ABORT(GLDecoderContextData::MATRIXINDEX_LOCATION);
ctx->glMatrixIndexPointerOES(size, type, 0, ctx->m_contextData->pointerData(GLDecoderContextData::MATRIXINDEX_LOCATION));
}
void GLDecoder::s_glDrawElementsOffset(void *self, GLenum mode, GLsizei count, GLenum type, GLuint offset)
{
GLDecoder *ctx = (GLDecoder *)self;

View File

@@ -53,6 +53,12 @@ private:
static void s_glDrawElementsOffset(void *self, GLenum mode, GLsizei count, GLenum type, GLuint offset);
static void s_glDrawElementsData(void *self, GLenum mode, GLsizei count, GLenum type, void * data, GLuint datalen);
static void s_glWeightPointerData(void * self, GLint size, GLenum type, GLsizei stride, void * data, GLuint datalen);
static void s_glWeightPointerOffset(void * self, GLint size, GLenum type, GLsizei stride, GLuint offset);
static void s_glMatrixIndexPointerData(void * self, GLint size, GLenum type, GLsizei stride, void * data, GLuint datalen);
static void s_glMatrixIndexPointerOffset(void * self, GLint size, GLenum type, GLsizei stride, GLuint offset);
static void * s_getProc(const char *name, void *userData);
GLDecoderContextData *m_contextData;