!gles12tr_internal

# OpenGL functions that are used only internally by the the GLES1->2 translator

%typedef GLvoid* GLvoidptr;
%typedef const GLubyte* constGLubyte;

void glActiveTexture( GLenum texture);
void glAlphaFunc( GLenum func, GLclampf ref);
void glAlphaFuncx( GLenum func, GLclampx ref);
void glAlphaFuncxOES( GLenum func, GLclampx ref);
void glAttachShader( GLuint program, GLuint shader);
void glBindAttribLocation( GLuint program, GLuint index, const GLchar* name);
void glBindBuffer( GLenum target, GLuint buffer);
void glBindFramebuffer( GLenum target, GLuint framebuffer);
void glBindFramebufferOES( GLenum target, GLuint framebuffer);
void glBindRenderbuffer( GLenum target, GLuint renderbuffer);
void glBindRenderbufferOES( GLenum target, GLuint renderbuffer);
void glBindTexture( GLenum target, GLuint texture);
void glBlendColor( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
void glBlendEquation( GLenum mode);
void glBlendEquationOES( GLenum mode);
void glBlendEquationSeparate( GLenum modeRGB, GLenum modeAlpha);
void glBlendEquationSeparateOES( GLenum modeRGB, GLenum modeAlpha);
void glBlendFunc( GLenum sfactor, GLenum dfactor);
void glBlendFuncSeparate( GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
void glBlendFuncSeparateOES( GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
void glBufferData( GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage);
void glBufferSubData( GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data);
GLenum glCheckFramebufferStatus( GLenum target);
GLenum glCheckFramebufferStatusOES( GLenum target);
void glClear( GLbitfield mask);
void glClearColor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
void glClearColorx( GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha);
void glClearColorxOES( GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha);
void glClearDepthf( GLfloat depth);
void glClearDepthfOES( GLclampf depth);
void glClearDepthx( GLclampx depth);
void glClearDepthxOES( GLclampx depth);
void glClearStencil( GLint s);
void glClientActiveTexture( GLenum texture);
void glClipPlanef( GLenum pname, const GLfloat* equation);
void glClipPlanefOES( GLenum pname, const GLfloat* equation);
void glClipPlanex( GLenum pname, const GLfixed* equation);
void glClipPlanexOES( GLenum pname, const GLfixed* equation);
void glColor4f( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
void glColor4fv( const GLfloat* components);
void glColor4ub( GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha);
void glColor4ubv( const GLubyte* components);
void glColor4x( GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
void glColor4xOES( GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
void glColorMask( GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
void glColorPointer( GLint size, GLenum type, GLsizei stride, const GLvoid* pointer);
void glColorPointerBounds( GLint size, GLenum type, GLsizei stride, const GLvoid* pointer, GLsizei count);
void glCompileShader( GLuint shader);
void glCompressedTexImage2D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei image_size, const GLvoid* data);
void glCompressedTexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei image_size, const GLvoid* data);
void glCopyTexImage2D( GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
void glCopyTexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
GLuint glCreateProgram(void);
GLuint glCreateShader( GLenum type);
void glCullFace( GLenum mode);
void glCurrentPaletteMatrixOES( GLuint index);
void glDeleteBuffers( GLsizei n, const GLuint* buffers);
void glDeleteFramebuffers( GLsizei n, const GLuint* framebuffers);
void glDeleteFramebuffersOES( GLsizei n, const GLuint* framebuffers);
void glDeleteProgram( GLuint program);
void glDeleteRenderbuffers( GLsizei n, const GLuint* renderbuffers);
void glDeleteRenderbuffersOES( GLsizei n, const GLuint* renderbuffers);
void glDeleteShader( GLuint shader);
void glDeleteTextures( GLsizei n, const GLuint* textures);
void glDepthFunc( GLenum func);
void glDepthMask( GLboolean flag);
void glDepthRangef( GLfloat zNear, GLfloat zFar);
void glDepthRangefOES( GLclampf zNear, GLclampf zFar);
void glDepthRangex( GLclampx zNear, GLclampx zFar);
void glDepthRangexOES( GLclampx zNear, GLclampx zFar);
void glDetachShader( GLuint program, GLuint shader);
void glDisable( GLenum cap);
void glDisableClientState( GLenum cap);
void glDisableVertexAttribArray( GLuint index);
void glDrawArrays( GLenum mode, GLint first, GLsizei count);
void glDrawElements( GLenum mode, GLsizei count, GLenum type, const GLvoid* indices);
void glDrawTexfOES( GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height);
void glDrawTexfvOES( const GLfloat* coords);
void glDrawTexiOES( GLint x, GLint y, GLint z, GLint width, GLint height);
void glDrawTexivOES( const GLint* coords);
void glDrawTexsOES( GLshort x, GLshort y, GLshort z, GLshort width, GLshort height);
void glDrawTexsvOES( const GLshort* coords);
void glDrawTexxOES( GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height);
void glDrawTexxvOES( const GLfixed* coords);
void glEGLImageTargetRenderbufferStorageOES( GLenum target, GLeglImageOES buffer);
void glEGLImageTargetTexture2DOES( GLenum target, GLeglImageOES buffer);
void glEnable( GLenum cap);
void glEnableClientState( GLenum cap);
void glEnableVertexAttribArray( GLuint index);
void glFinish(void);
void glFlush(void);
void glFogf( GLenum name, GLfloat param);
void glFogfv( GLenum name, const GLfloat* params);
void glFogx( GLenum pname, GLfixed param);
void glFogxOES( GLenum pname, GLfixed param);
void glFogxv( GLenum pname, const GLfixed* params);
void glFogxvOES( GLenum pname, const GLfixed* params);
void glFramebufferRenderbuffer( GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
void glFramebufferRenderbufferOES( GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
void glFramebufferTexture2D( GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
void glFramebufferTexture2DOES( GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
void glFrontFace( GLenum mode);
void glFrustumf( GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar);
void glFrustumfOES( GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar);
void glFrustumx( GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar);
void glFrustumxOES( GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar);
void glGenBuffers( GLsizei n, GLuint* buffers);
void glGenFramebuffers( GLsizei n, GLuint* framebuffers);
void glGenFramebuffersOES( GLsizei n, GLuint* framebuffers);
void glGenRenderbuffers( GLsizei n, GLuint* renderbuffers);
void glGenRenderbuffersOES( GLsizei n, GLuint* renderbuffers);
void glGenTextures( GLsizei n, GLuint* textures);
void glGenerateMipmap( GLenum target);
void glGenerateMipmapOES( GLenum target);
void glGetActiveAttrib( GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name);
void glGetActiveUniform( GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name);
void glGetAttachedShaders( GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders);
GLint glGetAttribLocation( GLuint program, const GLchar* name);
void glGetBooleanv( GLenum pname, GLboolean* params);
void glGetBufferParameteriv( GLenum target, GLenum pname, GLint* params);
void glGetClipPlanef( GLenum pname, GLfloat* eqn);
void glGetClipPlanefOES( GLenum pname, GLfloat* eqn);
void glGetClipPlanex( GLenum pname, GLfixed* eqn);
void glGetClipPlanexOES( GLenum pname, GLfixed* eqn);
GLenum glGetError(void);
void glGetFixedv( GLenum pname, GLfixed* params);
void glGetFixedvOES( GLenum pname, GLfixed* params);
void glGetFloatv( GLenum pname, GLfloat* params);
void glGetFramebufferAttachmentParameteriv( GLenum target, GLenum attachment, GLenum pname, GLint* params);
void glGetFramebufferAttachmentParameterivOES( GLenum target, GLenum attachment, GLenum pname, GLint* params);
void glGetIntegerv( GLenum pname, GLint* params);
void glGetLightfv( GLenum lightid, GLenum name, GLfloat* params);
void glGetLightxv( GLenum light, GLenum pname, GLfixed* params);
void glGetLightxvOES( GLenum light, GLenum pname, GLfixed* params);
void glGetMaterialfv( GLenum face, GLenum name, GLfloat* params);
void glGetMaterialxv( GLenum face, GLenum pname, GLfixed* params);
void glGetMaterialxvOES( GLenum face, GLenum pname, GLfixed* params);
void glGetPointerv( GLenum pname, void** params);
void glGetProgramInfoLog( GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog);
void glGetProgramiv( GLuint program, GLenum pname, GLint* params);
void glGetRenderbufferParameteriv( GLenum target, GLenum pname, GLint* params);
void glGetRenderbufferParameterivOES( GLenum target, GLenum pname, GLint* params);
void glGetShaderInfoLog( GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog);
void glGetShaderPrecisionFormat( GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision);
void glGetShaderSource( GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source);
void glGetShaderiv( GLuint shader, GLenum pname, GLint* params);
constGLubyte glGetString( GLenum name);
void glGetTexEnvfv( GLenum env, GLenum pname, GLfloat* params);
void glGetTexEnviv( GLenum env, GLenum pname, GLint* params);
void glGetTexEnvxv( GLenum env, GLenum pname, GLfixed* params);
void glGetTexEnvxvOES( GLenum env, GLenum pname, GLfixed* params);
void glGetTexParameterfv( GLenum target, GLenum pname, GLfloat* params);
void glGetTexParameteriv( GLenum target, GLenum pname, GLint* params);
void glGetTexParameterxv( GLenum target, GLenum pname, GLfixed* params);
void glGetTexParameterxvOES( GLenum target, GLenum pname, GLfixed* params);
void glGetUniformfv( GLuint program, GLint location, GLfloat* params);
void glGetUniformiv( GLuint program, GLint location, GLint* params);
GLint glGetUniformLocation( GLuint program, const GLchar* name);
void glGetVertexAttribPointerv( GLuint index, GLenum pname, GLvoid** pointer);
void glGetVertexAttribfv( GLuint index, GLenum pname, GLfloat* params);
void glGetVertexAttribiv( GLuint index, GLenum pname, GLint* params);
void glHint( GLenum target, GLenum mode);
GLboolean glIsBuffer( GLuint buffer);
GLboolean glIsEnabled( GLenum cap);
GLboolean glIsFramebuffer( GLuint framebuffer);
GLboolean glIsFramebufferOES( GLuint framebuffer);
GLboolean glIsProgram( GLuint program);
GLboolean glIsRenderbuffer( GLuint renderbuffer);
GLboolean glIsRenderbufferOES( GLuint renderbuffer);
GLboolean glIsShader( GLuint shader);
GLboolean glIsTexture( GLuint texture);
void glLightModelf( GLenum name, GLfloat param);
void glLightModelfv( GLenum name, const GLfloat* params);
void glLightModelx( GLenum pname, GLfixed param);
void glLightModelxOES( GLenum pname, GLfixed param);
void glLightModelxv( GLenum pname, const GLfixed* params);
void glLightModelxvOES( GLenum pname, const GLfixed* params);
void glLightf( GLenum lightid, GLenum name, GLfloat param);
void glLightfv( GLenum lightid, GLenum name, const GLfloat* params);
void glLightx( GLenum light, GLenum pname, GLfixed param);
void glLightxOES( GLenum light, GLenum pname, GLfixed param);
void glLightxv( GLenum light, GLenum pname, const GLfixed* params);
void glLightxvOES( GLenum light, GLenum pname, const GLfixed* params);
void glLineWidth( GLfloat width);
void glLineWidthx( GLfixed width);
void glLineWidthxOES( GLfixed width);
void glLinkProgram( GLuint program);
void glLoadIdentity(void);
void glLoadMatrixf( const GLfloat* m);
void glLoadMatrixx( const GLfixed* m);
void glLoadMatrixxOES( const GLfixed* m);
void glLoadPaletteFromModelViewMatrixOES(void);
GLvoidptr glMapTexSubImage2DCHROMIUM( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, GLenum access);
void glMaterialf( GLenum face, GLenum name, GLfloat param);
void glMaterialfv( GLenum face, GLenum name, const GLfloat* params);
void glMaterialx( GLenum face, GLenum pname, GLfixed param);
void glMaterialxOES( GLenum face, GLenum pname, GLfixed param);
void glMaterialxv( GLenum face, GLenum pname, const GLfixed* params);
void glMaterialxvOES( GLenum face, GLenum pname, const GLfixed* params);
void glMatrixMode( GLenum mode);
void glMatrixIndexPointerOES( GLint size, GLenum type, GLsizei stride, const GLvoid* pointer);
void glMatrixIndexPointerOESBounds( GLint size, GLenum type, GLsizei stride, const GLvoid* pointer, GLsizei count);
void glMultMatrixf( const GLfloat* m);
void glMultMatrixx( const GLfixed* m);
void glMultMatrixxOES( const GLfixed* m);
void glNormal3f( GLfloat nx, GLfloat ny, GLfloat nz);
void glNormal3fv( const GLfloat* coords);
void glNormal3sv( const GLshort* coords);
void glNormal3x( GLfixed nx, GLfixed ny, GLfixed nz);
void glNormal3xOES( GLfixed nx, GLfixed ny, GLfixed nz);
void glNormalPointer( GLenum type, GLsizei stride, const GLvoid* pointer);
void glNormalPointerBounds( GLenum type, GLsizei stride, const GLvoid* pointer, GLsizei count);
void glOrthof( GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat z_near, GLfloat z_far);
void glOrthofOES( GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar);
void glOrthox( GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar);
void glOrthoxOES( GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar);
void glPixelStorei( GLenum pname, GLint param);
void glPointParameterf( GLenum pname, GLfloat param);
void glPointParameterfv( GLenum pname, const GLfloat* params);
void glPointParameterx( GLenum pname, GLfixed param);
void glPointParameterxOES( GLenum pname, GLfixed param);
void glPointParameterxv( GLenum pname, const GLfixed* params);
void glPointParameterxvOES( GLenum pname, const GLfixed* params);
void glPointSize( GLfloat size);
void glPointSizex( GLfixed size);
void glPointSizexOES( GLfixed size);
void glPointSizePointerOES( GLenum type, GLsizei stride, const GLvoid* pointer);
void glPointSizePointer( GLenum type, GLsizei stride, const GLvoid* pointer);
void glPointSizePointerOESBounds( GLenum type, GLsizei stride, const GLvoid* pointer, GLsizei count);
void glPolygonOffset( GLfloat factor, GLfloat units);
void glPolygonOffsetx( GLfixed factor, GLfixed units);
void glPolygonOffsetxOES( GLfixed factor, GLfixed units);
void glPopMatrix(void);
void glPushMatrix(void);
void glReadPixels( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels);
void glReleaseShaderCompiler(void);
void glRenderbufferStorage( GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
void glRenderbufferStorageOES( GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
void glRotatef( GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
void glRotatex( GLfixed angle, GLfixed x, GLfixed y, GLfixed z);
void glRotatexOES( GLfixed angle, GLfixed x, GLfixed y, GLfixed z);
void glSampleCoverage( GLclampf value, GLboolean invert);
void glSampleCoveragex( GLclampx value, GLboolean invert);
void glSampleCoveragexOES( GLclampx value, GLboolean invert);
void glScalef( GLfloat x, GLfloat y, GLfloat z);
void glScalex( GLfixed x, GLfixed y, GLfixed z);
void glScalexOES( GLfixed x, GLfixed y, GLfixed z);
void glScissor( GLint x, GLint y, GLsizei width, GLsizei height);
void glShadeModel( GLenum mode);
void glShaderSource( GLuint shader, GLsizei count, const GLchar* const* string, const GLint* length);
void glStencilFunc( GLenum func, GLint ref, GLuint mask);
void glStencilFuncSeparate( GLenum face, GLenum func, GLint ref, GLuint mask);
void glStencilMask( GLuint mask);
void glStencilMaskSeparate( GLenum face, GLuint mask);
void glStencilOp( GLenum sfail, GLenum zfail, GLenum zpass);
void glStencilOpSeparate( GLenum face, GLenum sfail, GLenum zfail, GLenum zpass);
void glTexCoordPointer( GLint size, GLenum type, GLsizei stride, const GLvoid* pointer);
void glTexCoordPointerBounds( GLint size, GLenum type, GLsizei stride, const GLvoid* pointer, GLsizei count);
void glTexEnvf( GLenum target, GLenum pname, GLfloat param);
void glTexEnvfv( GLenum target, GLenum pname, const GLfloat* params);
void glTexEnvi( GLenum target, GLenum pname, GLint param);
void glTexEnviv( GLenum target, GLenum pname, const GLint* params);
void glTexEnvx( GLenum target, GLenum pname, GLfixed param);
void glTexEnvxOES( GLenum target, GLenum pname, GLfixed param);
void glTexEnvxv( GLenum target, GLenum pname, const GLfixed* params);
void glTexEnvxvOES( GLenum target, GLenum pname, const GLfixed* params);
void glTexGeniOES( GLenum coord, GLenum pname, GLint param);
void glTexGenivOES( GLenum coord, GLenum pname, const GLint* params);
void glTexGenxOES( GLenum coord, GLenum pname, GLfixed param);
void glTexGenxvOES( GLenum coord, GLenum pname, const GLfixed* params);
void glTexImage2D( GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels);
void glTexParameterf( GLenum target, GLenum pname, GLfloat param);
void glTexParameterfv( GLenum target, GLenum pname, const GLfloat* params);
void glTexParameteri( GLenum target, GLenum pname, GLint param);
void glTexParameteriv( GLenum target, GLenum pname, const GLint* params);
void glTexParameterx( GLenum target, GLenum pname, GLfixed param);
void glTexParameterxOES( GLenum target, GLenum pname, GLfixed param);
void glTexParameterxv( GLenum target, GLenum pname, const GLfixed* params);
void glTexParameterxvOES( GLenum target, GLenum pname, const GLfixed* params);
void glTexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels);
void glTranslatef( GLfloat x, GLfloat y, GLfloat z);
void glTranslatex( GLfixed x, GLfixed y, GLfixed z);
void glTranslatexOES( GLfixed x, GLfixed y, GLfixed z);
void glUniform1f( GLint location, GLfloat x);
void glUniform1fv( GLint location, GLsizei count, const GLfloat* v);
void glUniform1i( GLint location, GLint x);
void glUniform1iv( GLint location, GLsizei count, const GLint* v);
void glUniform2f( GLint location, GLfloat x, GLfloat y);
void glUniform2fv( GLint location, GLsizei count, const GLfloat* v);
void glUniform2i( GLint location, GLint x, GLint y);
void glUniform2iv( GLint location, GLsizei count, const GLint* v);
void glUniform3f( GLint location, GLfloat x, GLfloat y, GLfloat z);
void glUniform3fv( GLint location, GLsizei count, const GLfloat* v);
void glUniform3i( GLint location, GLint x, GLint y, GLint z);
void glUniform3iv( GLint location, GLsizei count, const GLint* v);
void glUniform4f( GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
void glUniform4fv( GLint location, GLsizei count, const GLfloat* v);
void glUniform4i( GLint location, GLint x, GLint y, GLint z, GLint w);
void glUniform4iv( GLint location, GLsizei count, const GLint* v);
void glUniformMatrix2fv( GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
void glUniformMatrix3fv( GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
void glUniformMatrix4fv( GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
void glUnmapTexSubImage2DCHROMIUM( const GLvoid* mem);
void glUseProgram( GLuint program);
void glValidateProgram( GLuint program);
void glVertexAttrib1f( GLuint indx, GLfloat x);
void glVertexAttrib1fv( GLuint indx, const GLfloat* values);
void glVertexAttrib2f( GLuint indx, GLfloat x, GLfloat y);
void glVertexAttrib2fv( GLuint indx, const GLfloat* values);
void glVertexAttrib3f( GLuint indx, GLfloat x, GLfloat y, GLfloat z);
void glVertexAttrib3fv( GLuint indx, const GLfloat* values);
void glVertexAttrib4f( GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
void glVertexAttrib4fv( GLuint indx, const GLfloat* values);
void glVertexAttribPointer( GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* pointer);
void glVertexPointer( GLint size, GLenum type, GLsizei stride, const GLvoid* pointer);
void glVertexPointerBounds( GLint size, GLenum type, GLsizei stride, GLvoid* pointer, GLsizei count);
void glViewport( GLint x, GLint y, GLsizei width, GLsizei height);
void glWeightPointerOES( GLint size, GLenum type, GLsizei stride, const GLvoid* pointer);
void glWeightPointerOESBounds( GLint size, GLenum type, GLsizei stride, const GLvoid* pointer, GLsizei count);

