Пример #1
0
static VALUE gl_VertexAttribPointerNV(VALUE obj,VALUE arg1,VALUE arg2,VALUE arg3,VALUE arg4,VALUE arg5)
{
	GLuint index;
	GLuint size;
	GLenum type;
	GLsizei stride;

	LOAD_GL_FUNC(glVertexAttribPointerNV, "GL_NV_vertex_program");

	index = (GLuint)NUM2UINT(arg1);
	size = (GLuint)NUM2UINT(arg2);
	type = (GLenum)NUM2INT(arg3);
	stride = (GLsizei)NUM2UINT(arg4);
	if (index>_MAX_VERTEX_ATTRIBS)
		rb_raise(rb_eArgError, "Index too large, maximum allowed value '%i'",_MAX_VERTEX_ATTRIBS);

	if (CheckBufferBinding(GL_ARRAY_BUFFER_BINDING)) {
		g_VertexAttrib_ptr[index] = arg5;
		fptr_glVertexAttribPointerNV(index,size,type,stride,(GLvoid *)NUM2LONG(arg5));
	} else {
		VALUE data;
		data = pack_array_or_pass_string(type,arg5);
		rb_str_freeze(data);
		g_VertexAttrib_ptr[index] = data;
		fptr_glVertexAttribPointerNV(index,size,type,stride,(GLvoid *)RSTRING_PTR(data));
	}

	CHECK_GLERROR_FROM("glVertexAttribPointerNV");
	return Qnil;
}
Пример #2
0
static void
buffer_free(void *ptr) {
	struct buffer *buf = ptr;
	LOAD_GL_FUNC(glUnmapBuffer, "1.5");

	if (buf->ptr != NULL)
		fptr_glUnmapBuffer(buf->target);
}
Пример #3
0
static VALUE gl_GetProgramivNV(VALUE obj,VALUE arg1,VALUE arg2)
{
	GLint ret = 0;
	LOAD_GL_FUNC(glGetProgramivNV, "GL_NV_vertex_program");
	fptr_glGetProgramivNV(NUM2INT(arg1),NUM2INT(arg2),&ret);
	CHECK_GLERROR_FROM("glGetProgramivNV");
	return cond_GLBOOL2RUBY(NUM2INT(arg2),ret);
}
Пример #4
0
static VALUE gl_LoadProgramNV(VALUE obj,VALUE arg1,VALUE arg2,VALUE arg3)
{
	LOAD_GL_FUNC(glLoadProgramNV, "GL_NV_vertex_program");
	Check_Type(arg3,T_STRING);
	fptr_glLoadProgramNV((GLenum)NUM2INT(arg1),(GLuint)NUM2UINT(arg2),(GLsizei)RSTRING_LENINT(arg3),(GLubyte *)RSTRING_PTR(arg3));
	CHECK_GLERROR_FROM("glLoadProgramNV");
	return Qnil;
}
Пример #5
0
static VALUE gl_ProgramStringARB(VALUE obj,VALUE arg1,VALUE arg2,VALUE arg3)
{
	LOAD_GL_FUNC(glProgramStringARB, "GL_ARB_vertex_program");
	Check_Type(arg3,T_STRING);
	fptr_glProgramStringARB((GLenum)NUM2INT(arg1),(GLenum)NUM2INT(arg2),(GLsizei)RSTRING_LENINT(arg3),RSTRING_PTR(arg3));
	CHECK_GLERROR_FROM("glProgramStringARB");
	return Qnil;
}
Пример #6
0
static VALUE gl_StringMarkerGREMEDY(VALUE obj,VALUE arg1)
{
	LOAD_GL_FUNC(glStringMarkerGREMEDY,"GL_GREMEDY_string_marker")
	Check_Type(arg1,T_STRING);
	fptr_glStringMarkerGREMEDY(RSTRING_LEN(arg1),RSTRING_PTR(arg1));
	CHECK_GLERROR
	return Qnil;
}
Пример #7
0
static VALUE gl_ExecuteProgramNV(VALUE obj,VALUE arg1,VALUE arg2,VALUE arg3)
{
	GLfloat params[4] = {0,0,0,0};
	LOAD_GL_FUNC(glExecuteProgramNV, "GL_NV_vertex_program");
	ary2cflt(arg3,params,4);
	fptr_glExecuteProgramNV(NUM2UINT(arg1),NUM2UINT(arg2),params);
	CHECK_GLERROR_FROM("glExecuteProgramNV");
	return Qnil;
}
Пример #8
0
void check_for_glerror(VALUE obj, const char *caller)
{
	GLenum error;
  DECL_GL_FUNC_PTR(GLenum,glGetError,(void));

  LOAD_GL_FUNC(glGetError, NULL);
	error = fptr_glGetError();

	if (error==GL_NO_ERROR) { /* no errors == instant return */
		return;
	} else { /* process errors */
		const char *error_string;
		const char *from = "";
		int queued_errors = 0;
		char message[BUFSIZE];
		VALUE exc;

		if (caller) {
			from = " for ";
		} else {
			caller = "";
		}

		/* check for queued errors */
		for(queued_errors = 0;
				fptr_glGetError()!=GL_NO_ERROR;
				queued_errors++)
			;

		switch(error) {
			case GL_INVALID_ENUM: error_string = "invalid enumerant"; break;
			case GL_INVALID_VALUE: error_string = "invalid value"; break;
			case GL_INVALID_OPERATION: error_string = "invalid operation"; break;
			case GL_STACK_OVERFLOW: error_string = "stack overflow"; break;
			case GL_STACK_UNDERFLOW: error_string = "stack underflow"; break;
			case GL_OUT_OF_MEMORY: error_string = "out of memory"; break;
			case GL_TABLE_TOO_LARGE: error_string = "table too large"; break;
			case GL_INVALID_FRAMEBUFFER_OPERATION_EXT: error_string = "invalid framebuffer operation"; break;
			default: error_string = "unknown error"; break;
		}

		if (queued_errors==0) {
			snprintf(message, BUFSIZE, "%s%s%s", error_string, from, caller);
		} else {
			snprintf(message, BUFSIZE, "%s%s%s [%i queued error(s) cleaned]",
					error_string, from, caller, queued_errors);
		}

		exc = rb_funcall(Class_GLError, rb_intern("new"), 2, rb_str_new2(message), INT2NUM(error));
		rb_funcall(rb_cObject, rb_intern("raise"), 1, exc);
	}
}
Пример #9
0
static VALUE gl_DrawBuffersATI(VALUE obj,VALUE arg1)
{
	GLsizei size;
	GLenum *buffers;
	LOAD_GL_FUNC(glDrawBuffersATI,"GL_ATI_draw_buffers")
	Check_Type(arg1,T_ARRAY); 
	size = (GLsizei)RARRAY_LEN(arg1);
	buffers = ALLOC_N(GLenum,size);
	ary2cuint(arg1,buffers,size);
	fptr_glDrawBuffersATI(size,buffers);
	xfree(buffers);
	CHECK_GLERROR
	return Qnil;
}
Пример #10
0
static VALUE gl_GetProgramStringNV(VALUE obj,VALUE arg1,VALUE arg2)
{
	GLsizei len = 0;
	char *buffer;
	VALUE ret_buffer;

	LOAD_GL_FUNC(glGetProgramStringNV, "GL_NV_vertex_program");
	LOAD_GL_FUNC(glGetProgramivNV, "GL_NV_vertex_program");

	fptr_glGetProgramivNV(NUM2INT(arg1),GL_PROGRAM_LENGTH_NV,&len);
	CHECK_GLERROR_FROM("glGetProgramivNV");
	if (len<=0)
		return rb_str_new2("");
	
	buffer = ALLOC_N(GLchar,len+1);
	memset(buffer,0,sizeof(GLchar) * (len+1));
		fptr_glGetProgramStringNV(NUM2INT(arg1),NUM2INT(arg2),buffer);
	ret_buffer = rb_str_new2(buffer);
	xfree(buffer);

	CHECK_GLERROR_FROM("glGetProgramStringNV");
	return ret_buffer;
}
Пример #11
0
VALUE
rb_gl_buffer_s_map(VALUE klass, VALUE _target, VALUE _access) {
	struct buffer *buf = ALLOC(struct buffer);
	LOAD_GL_FUNC(glMapBuffer, "1.5");

	buf->target = RUBY2GLENUM(_target);
	buf->len		= 0;

	buf->ptr = fptr_glMapBuffer(buf->target, RUBY2GLENUM(_access));

	if (buf->ptr == NULL) {
		xfree(buf);
		CHECK_GLERROR_FROM("glMapBuffer");
	}

	return TypedData_Wrap_Struct(klass, &buffer_type, buf);
}
Пример #12
0
static VALUE gl_PointParameterfvARB(VALUE obj,VALUE arg1,VALUE arg2)
{
	GLfloat params[3] = {(GLfloat)0.0,(GLfloat)0.0,(GLfloat)0.0};
	GLenum pname;
	GLint size;
	LOAD_GL_FUNC(glPointParameterfvARB, "GL_ARB_point_parameters");
	pname = NUM2UINT(arg1);
	Check_Type(arg2,T_ARRAY);
	if (pname==GL_POINT_DISTANCE_ATTENUATION)
		size = 3;
	else
		size = 1;
	ary2cflt(arg2,params,size);
	fptr_glPointParameterfvARB(pname,params);
	CHECK_GLERROR_FROM("glPointParameterfvARB");
	return Qnil;
}
Пример #13
0
static VALUE
rb_gl_buffer_unmap(VALUE self) {
	struct buffer *buf;
	LOAD_GL_FUNC(glUnmapBuffer, "1.5");

	TypedData_Get_Struct(self, struct buffer, &buffer_type, buf);

	if (!buf->ptr)
		return self;

	fptr_glUnmapBuffer(buf->target);

	CHECK_GLERROR_FROM("glUnmapBuffer");

	buf->ptr = NULL;
	buf->len = 0;
	buf->target = 0;

	return self;
}
void GLDispatch::dispatchFuncs(GLESVersion version){
    android::Mutex::Autolock mutex(s_lock);
    if(m_isLoaded)
        return;

    /* Loading OpenGL functions which are needed for implementing BOTH GLES 1.1 & GLES 2.0*/
    LOAD_GL_FUNC(glActiveTexture);
    LOAD_GL_FUNC(glBindBuffer);
    LOAD_GL_FUNC(glBindTexture);
    LOAD_GL_FUNC(glBlendFunc);
    LOAD_GL_FUNC(glBlendEquation);
    LOAD_GL_FUNC(glBlendEquationSeparate);
    LOAD_GL_FUNC(glBlendFuncSeparate);
    LOAD_GL_FUNC(glBufferData);
    LOAD_GL_FUNC(glBufferSubData);
    LOAD_GL_FUNC(glClear);
    LOAD_GL_FUNC(glClearColor);
    LOAD_GL_FUNC(glClearDepth);
    LOAD_GL_FUNC(glClearStencil);
    LOAD_GL_FUNC(glColorMask);
    LOAD_GL_FUNC(glCompressedTexImage2D);
    LOAD_GL_FUNC(glCompressedTexSubImage2D);
    LOAD_GL_FUNC(glCopyTexImage2D);
    LOAD_GL_FUNC(glCopyTexSubImage2D);
    LOAD_GL_FUNC(glCullFace);
    LOAD_GL_FUNC(glDeleteBuffers);
    LOAD_GL_FUNC(glDeleteTextures);
    LOAD_GL_FUNC(glDepthFunc);
    LOAD_GL_FUNC(glDepthMask);
    LOAD_GL_FUNC(glDepthRange);
    LOAD_GL_FUNC(glDisable);
    LOAD_GL_FUNC(glDrawArrays);
    LOAD_GL_FUNC(glDrawElements);
    LOAD_GL_FUNC(glEnable);
    LOAD_GL_FUNC(glFinish);
    LOAD_GL_FUNC(glFlush);
    LOAD_GL_FUNC(glFrontFace);
    LOAD_GL_FUNC(glGenBuffers);
    LOAD_GL_FUNC(glGenTextures);
    LOAD_GL_FUNC(glGetBooleanv);
    LOAD_GL_FUNC(glGetBufferParameteriv);
    LOAD_GL_FUNC(glGetError);
    LOAD_GL_FUNC(glGetFloatv);
    LOAD_GL_FUNC(glGetIntegerv);
    LOAD_GL_FUNC(glGetString);
    LOAD_GL_FUNC(glTexParameterf);
    LOAD_GL_FUNC(glTexParameterfv);
    LOAD_GL_FUNC(glGetTexParameterfv);
    LOAD_GL_FUNC(glGetTexParameteriv);
    LOAD_GL_FUNC(glHint);
    LOAD_GL_FUNC(glIsBuffer);
    LOAD_GL_FUNC(glIsEnabled);
    LOAD_GL_FUNC(glIsTexture);
    LOAD_GL_FUNC(glLineWidth);
    LOAD_GL_FUNC(glPolygonOffset);
    LOAD_GL_FUNC(glPixelStorei);
    LOAD_GL_FUNC(glReadPixels);
    LOAD_GL_FUNC(glSampleCoverage);
    LOAD_GL_FUNC(glScissor);
    LOAD_GL_FUNC(glStencilFunc);
    LOAD_GL_FUNC(glStencilMask);
    LOAD_GL_FUNC(glStencilOp);
    LOAD_GL_FUNC(glTexImage2D);
    LOAD_GL_FUNC(glTexParameteri);
    LOAD_GL_FUNC(glTexParameteriv);
    LOAD_GL_FUNC(glTexSubImage2D);
    LOAD_GL_FUNC(glViewport);
    LOAD_GL_FUNC(glPushAttrib);
    LOAD_GL_FUNC(glPushClientAttrib);
    LOAD_GL_FUNC(glPopAttrib);
    LOAD_GL_FUNC(glPopClientAttrib);
    
    /* Loading OpenGL functions which are needed ONLY for implementing GLES 1.1*/
    if(version == GLES_1_1){
        LOAD_GL_FUNC(glAlphaFunc);
        LOAD_GL_FUNC(glBegin);
        LOAD_GL_FUNC(glClientActiveTexture);
        LOAD_GL_FUNC(glClipPlane);
        LOAD_GL_FUNC(glColor4d);
        LOAD_GL_FUNC(glColor4f);
        LOAD_GL_FUNC(glColor4fv);
        LOAD_GL_FUNC(glColor4ub);
        LOAD_GL_FUNC(glColor4ubv);
        LOAD_GL_FUNC(glColorPointer);
        LOAD_GL_FUNC(glDisableClientState);
        LOAD_GL_FUNC(glEnableClientState);
        LOAD_GL_FUNC(glEnd);
        LOAD_GL_FUNC(glFogf);
        LOAD_GL_FUNC(glFogfv);
        LOAD_GL_FUNC(glFrustum);
        LOAD_GL_FUNC(glGetClipPlane);
        LOAD_GL_FUNC(glGetDoublev);
        LOAD_GL_FUNC(glGetLightfv);
        LOAD_GL_FUNC(glGetMaterialfv);
        LOAD_GL_FUNC(glGetPointerv);
        LOAD_GL_FUNC(glGetTexEnvfv);
        LOAD_GL_FUNC(glGetTexEnviv);
        LOAD_GL_FUNC(glLightf);
        LOAD_GL_FUNC(glLightfv);
        LOAD_GL_FUNC(glLightModelf);
        LOAD_GL_FUNC(glLightModelfv);
        LOAD_GL_FUNC(glLoadIdentity);
        LOAD_GL_FUNC(glLoadMatrixf);
        LOAD_GL_FUNC(glLogicOp);
        LOAD_GL_FUNC(glMaterialf);
        LOAD_GL_FUNC(glMaterialfv);
        LOAD_GL_FUNC(glMultiTexCoord2fv);
        LOAD_GL_FUNC(glMultiTexCoord2sv);
        LOAD_GL_FUNC(glMultiTexCoord3fv);
        LOAD_GL_FUNC(glMultiTexCoord3sv);
        LOAD_GL_FUNC(glMultiTexCoord4fv);
        LOAD_GL_FUNC(glMultiTexCoord4sv);
        LOAD_GL_FUNC(glMultiTexCoord4f);
        LOAD_GL_FUNC(glMultMatrixf);
        LOAD_GL_FUNC(glNormal3f);
        LOAD_GL_FUNC(glNormal3fv);
        LOAD_GL_FUNC(glNormal3sv);
        LOAD_GL_FUNC(glOrtho);
        LOAD_GL_FUNC(glPointParameterf);
        LOAD_GL_FUNC(glPointParameterfv);
        LOAD_GL_FUNC(glPointSize);
        LOAD_GL_FUNC(glRotatef);
        LOAD_GL_FUNC(glScalef);
        LOAD_GL_FUNC(glTexEnvf);
        LOAD_GL_FUNC(glTexEnvfv);
        LOAD_GL_FUNC(glMatrixMode);
        LOAD_GL_FUNC(glNormalPointer);
        LOAD_GL_FUNC(glPopMatrix);
        LOAD_GL_FUNC(glPushMatrix);
        LOAD_GL_FUNC(glShadeModel);
        LOAD_GL_FUNC(glTexCoordPointer);
        LOAD_GL_FUNC(glTexEnvi);
        LOAD_GL_FUNC(glTexEnviv);
        LOAD_GL_FUNC(glTranslatef);
        LOAD_GL_FUNC(glVertexPointer);

   	    LOAD_GLEXT_FUNC(glIsRenderbufferEXT);
        LOAD_GLEXT_FUNC(glBindRenderbufferEXT);
        LOAD_GLEXT_FUNC(glDeleteRenderbuffersEXT);
        LOAD_GLEXT_FUNC(glGenRenderbuffersEXT);
        LOAD_GLEXT_FUNC(glRenderbufferStorageEXT);
        LOAD_GLEXT_FUNC(glGetRenderbufferParameterivEXT);
        LOAD_GLEXT_FUNC(glIsFramebufferEXT);
        LOAD_GLEXT_FUNC(glBindFramebufferEXT);
        LOAD_GLEXT_FUNC(glDeleteFramebuffersEXT);
        LOAD_GLEXT_FUNC(glGenFramebuffersEXT);
        LOAD_GLEXT_FUNC(glCheckFramebufferStatusEXT);
        LOAD_GLEXT_FUNC(glFramebufferTexture1DEXT);
        LOAD_GLEXT_FUNC(glFramebufferTexture2DEXT);
        LOAD_GLEXT_FUNC(glFramebufferTexture3DEXT);
        LOAD_GLEXT_FUNC(glFramebufferRenderbufferEXT);
        LOAD_GLEXT_FUNC(glGetFramebufferAttachmentParameterivEXT);
        LOAD_GLEXT_FUNC(glGenerateMipmapEXT);
        LOAD_GLEXT_FUNC(glCurrentPaletteMatrixARB);
        LOAD_GLEXT_FUNC(glMatrixIndexuivARB);
        LOAD_GLEXT_FUNC(glMatrixIndexPointerARB);
        LOAD_GLEXT_FUNC(glWeightPointerARB);
        LOAD_GLEXT_FUNC(glTexGenf);
        LOAD_GLEXT_FUNC(glTexGeni);
        LOAD_GLEXT_FUNC(glTexGenfv);
        LOAD_GLEXT_FUNC(glTexGeniv);
        LOAD_GLEXT_FUNC(glGetTexGenfv);
        LOAD_GLEXT_FUNC(glGetTexGeniv);

    } else if (version == GLES_2_0){

    /* Loading OpenGL functions which are needed ONLY for implementing GLES 2.0*/

        LOAD_GL_FUNC(glBlendColor);
        LOAD_GL_FUNC(glBlendFuncSeparate);
        LOAD_GL_FUNC(glStencilFuncSeparate);
        LOAD_GL_FUNC(glGenerateMipmap);
        LOAD_GL_FUNC(glBindFramebuffer);
        LOAD_GL_FUNC(glBindRenderbuffer);
        LOAD_GL_FUNC(glDeleteFramebuffers);
        LOAD_GL_FUNC(glDeleteRenderbuffers);
        LOAD_GL_FUNC(glIsProgram);
        LOAD_GL_FUNC(glIsShader);
        LOAD_GL_FUNC(glVertexAttrib1f);
        LOAD_GL_FUNC(glVertexAttrib1fv);
        LOAD_GL_FUNC(glVertexAttrib2f);
        LOAD_GL_FUNC(glVertexAttrib2fv);
        LOAD_GL_FUNC(glVertexAttrib3f);
        LOAD_GL_FUNC(glVertexAttrib3fv);
        LOAD_GL_FUNC(glVertexAttrib4f);
        LOAD_GL_FUNC(glVertexAttrib4fv);
        LOAD_GL_FUNC(glVertexAttribPointer);
        LOAD_GL_FUNC(glDisableVertexAttribArray);
        LOAD_GL_FUNC(glEnableVertexAttribArray);
        LOAD_GL_FUNC(glGetVertexAttribfv);
        LOAD_GL_FUNC(glGetVertexAttribiv);
        LOAD_GL_FUNC(glGetVertexAttribPointerv);
        LOAD_GL_FUNC(glIsFramebuffer);
        LOAD_GL_FUNC(glIsRenderbuffer);
        LOAD_GL_FUNC(glUniform1f);
        LOAD_GL_FUNC(glUniform1fv);
        LOAD_GL_FUNC(glUniform1i);
        LOAD_GL_FUNC(glUniform1iv);
        LOAD_GL_FUNC(glUniform2f);
        LOAD_GL_FUNC(glUniform2fv);
        LOAD_GL_FUNC(glUniform2i);
        LOAD_GL_FUNC(glUniform2iv);
        LOAD_GL_FUNC(glUniform3f);
        LOAD_GL_FUNC(glUniform3fv);
        LOAD_GL_FUNC(glUniform3i);
        LOAD_GL_FUNC(glUniform3iv);
        LOAD_GL_FUNC(glUniform4f);
        LOAD_GL_FUNC(glUniform4fv);
        LOAD_GL_FUNC(glUniform4i);
        LOAD_GL_FUNC(glUniform4iv);
        LOAD_GL_FUNC(glUniformMatrix2fv);
        LOAD_GL_FUNC(glUniformMatrix3fv);
        LOAD_GL_FUNC(glUniformMatrix4fv);
        LOAD_GL_FUNC(glCheckFramebufferStatus);
        LOAD_GL_FUNC(glGetFramebufferAttachmentParameteriv);
        LOAD_GL_FUNC(glGetRenderbufferParameteriv);
        LOAD_GL_FUNC(glAttachShader);
        LOAD_GL_FUNC(glBindAttribLocation);
        LOAD_GL_FUNC(glCompileShader);
        LOAD_GL_FUNC(glCreateProgram);
        LOAD_GL_FUNC(glCreateShader);
        LOAD_GL_FUNC(glDeleteProgram);
        LOAD_GL_FUNC(glDeleteShader);
        LOAD_GL_FUNC(glDetachShader);
        LOAD_GL_FUNC(glLinkProgram);
        LOAD_GL_FUNC(glUseProgram);
        LOAD_GL_FUNC(glValidateProgram);
        LOAD_GL_FUNC(glGetActiveAttrib);
        LOAD_GL_FUNC(glGetActiveUniform);
        LOAD_GL_FUNC(glGetAttachedShaders);
        LOAD_GL_FUNC(glGetAttribLocation);
        LOAD_GL_FUNC(glGetProgramiv);
        LOAD_GL_FUNC(glGetProgramInfoLog);
        LOAD_GL_FUNC(glGetShaderiv);
        LOAD_GL_FUNC(glGetShaderInfoLog);
        LOAD_GL_FUNC(glGetShaderPrecisionFormat);
        LOAD_GL_FUNC(glGetShaderSource);
        LOAD_GL_FUNC(glGetUniformfv);
        LOAD_GL_FUNC(glGetUniformiv);
        LOAD_GL_FUNC(glGetUniformLocation);
        LOAD_GL_FUNC(glReleaseShaderCompiler);
        LOAD_GL_FUNC(glRenderbufferStorage);
        LOAD_GL_FUNC(glShaderBinary);
        LOAD_GL_FUNC(glShaderSource);
        LOAD_GL_FUNC(glStencilMaskSeparate);
        LOAD_GL_FUNC(glFramebufferRenderbuffer);
        LOAD_GL_FUNC(glFramebufferTexture2D);
    }
    m_isLoaded = true;
}
void GLDispatch::dispatchFuncs() {
    emugl::Mutex::AutoLock mutex(m_lock);
    if(m_isLoaded)
        return;
    LOAD_GL_FUNC(glActiveTexture);
    LOAD_GL_FUNC(glAlphaFunc);
    LOAD_GL_FUNC(glBegin);
    LOAD_GL_FUNC(glBindBuffer);
    LOAD_GL_FUNC(glBindTexture);
    LOAD_GL_FUNC(glBlendFunc);
    LOAD_GL_FUNC(glBufferData);
    LOAD_GL_FUNC(glBufferSubData);
    LOAD_GL_FUNC(glClear);
    LOAD_GL_FUNC(glClearColor);
    LOAD_GL_FUNC(glClearDepth);
    LOAD_GL_FUNC(glClearStencil);
    LOAD_GL_FUNC(glClientActiveTexture);
    LOAD_GL_FUNC(glClipPlane);
    LOAD_GL_FUNC(glColor4d);
    LOAD_GL_FUNC(glColor4f);
    LOAD_GL_FUNC(glColor4fv);
    LOAD_GL_FUNC(glColor4ub);
    LOAD_GL_FUNC(glColor4ubv);
    LOAD_GL_FUNC(glColorMask);
    LOAD_GL_FUNC(glColorPointer);
    LOAD_GL_FUNC(glCompressedTexImage2D);
    LOAD_GL_FUNC(glCompressedTexSubImage2D);
    LOAD_GL_FUNC(glCopyTexImage2D);
    LOAD_GL_FUNC(glCopyTexSubImage2D);
    LOAD_GL_FUNC(glCullFace);
    LOAD_GL_FUNC(glDeleteBuffers);
    LOAD_GL_FUNC(glDeleteTextures);
    LOAD_GL_FUNC(glDepthFunc);
    LOAD_GL_FUNC(glDepthMask);
    LOAD_GL_FUNC(glDepthRange);
    LOAD_GL_FUNC(glDisable);
    LOAD_GL_FUNC(glDisableClientState);
    LOAD_GL_FUNC(glDrawArrays);
    LOAD_GL_FUNC(glDrawElements);
    LOAD_GL_FUNC(glEnable);
    LOAD_GL_FUNC(glEnableClientState);
    LOAD_GL_FUNC(glEnd);
    LOAD_GL_FUNC(glFinish);
    LOAD_GL_FUNC(glFlush);
    LOAD_GL_FUNC(glFogf);
    LOAD_GL_FUNC(glFogfv);
    LOAD_GL_FUNC(glFrontFace);
    LOAD_GL_FUNC(glFrustum);
    LOAD_GL_FUNC(glGenBuffers);
    LOAD_GL_FUNC(glGenTextures);
    LOAD_GL_FUNC(glGetBooleanv);
    LOAD_GL_FUNC(glGetBufferParameteriv);
    LOAD_GL_FUNC(glGetClipPlane);
    LOAD_GL_FUNC(glGetDoublev);
    LOAD_GL_FUNC(glGetError);
    LOAD_GL_FUNC(glGetFloatv);
    LOAD_GL_FUNC(glGetIntegerv);
    LOAD_GL_FUNC(glGetLightfv);
    LOAD_GL_FUNC(glGetMaterialfv);
    LOAD_GL_FUNC(glGetPointerv);
    LOAD_GL_FUNC(glGetString);
    LOAD_GL_FUNC(glGetTexEnvfv);
    LOAD_GL_FUNC(glGetTexEnviv);
    LOAD_GL_FUNC(glGetTexParameterfv);
    LOAD_GL_FUNC(glGetTexParameteriv);
    LOAD_GL_FUNC(glHint);
    LOAD_GL_FUNC(glIsBuffer);
    LOAD_GL_FUNC(glIsEnabled);
    LOAD_GL_FUNC(glIsTexture);
    LOAD_GL_FUNC(glLightf);
    LOAD_GL_FUNC(glLightfv);
    LOAD_GL_FUNC(glLightModelf);
    LOAD_GL_FUNC(glLightModelfv);
    LOAD_GL_FUNC(glLineWidth);
    LOAD_GL_FUNC(glLoadIdentity);
    LOAD_GL_FUNC(glLoadMatrixf);
    LOAD_GL_FUNC(glLogicOp);
    LOAD_GL_FUNC(glMaterialf);
    LOAD_GL_FUNC(glMaterialfv);
    LOAD_GL_FUNC(glMultiTexCoord2fv);
    LOAD_GL_FUNC(glMultiTexCoord2sv);
    LOAD_GL_FUNC(glMultiTexCoord3fv);
    LOAD_GL_FUNC(glMultiTexCoord3sv);
    LOAD_GL_FUNC(glMultiTexCoord4fv);
    LOAD_GL_FUNC(glMultiTexCoord4sv);
    LOAD_GL_FUNC(glMultiTexCoord4f);
    LOAD_GL_FUNC(glMultMatrixf);
    LOAD_GL_FUNC(glNormal3f);
    LOAD_GL_FUNC(glNormal3fv);
    LOAD_GL_FUNC(glNormal3sv);
    LOAD_GL_FUNC(glOrtho);
    LOAD_GL_FUNC(glPointParameterf);
    LOAD_GL_FUNC(glPointParameterfv);
    LOAD_GL_FUNC(glPointSize);
    LOAD_GL_FUNC(glPolygonOffset);
    LOAD_GL_FUNC(glRotatef);
    LOAD_GL_FUNC(glScalef);
    LOAD_GL_FUNC(glTexEnvf);
    LOAD_GL_FUNC(glTexEnvfv);
    LOAD_GL_FUNC(glTexParameterf);
    LOAD_GL_FUNC(glTexParameterfv);
    LOAD_GL_FUNC(glMatrixMode);
    LOAD_GL_FUNC(glNormalPointer);
    LOAD_GL_FUNC(glPixelStorei);
    LOAD_GL_FUNC(glPopMatrix);
    LOAD_GL_FUNC(glPushMatrix);
    LOAD_GL_FUNC(glReadPixels);
    LOAD_GL_FUNC(glSampleCoverage);
    LOAD_GL_FUNC(glScissor);
    LOAD_GL_FUNC(glShadeModel);
    LOAD_GL_FUNC(glStencilFunc);
    LOAD_GL_FUNC(glStencilMask);
    LOAD_GL_FUNC(glStencilOp);
    LOAD_GL_FUNC(glTexCoordPointer);
    LOAD_GL_FUNC(glTexEnvi);
    LOAD_GL_FUNC(glTexEnviv);
    LOAD_GL_FUNC(glTexImage2D);
    LOAD_GL_FUNC(glTexParameteri);
    LOAD_GL_FUNC(glTexParameteriv);
    LOAD_GL_FUNC(glTexSubImage2D);
    LOAD_GL_FUNC(glTranslatef);
    LOAD_GL_FUNC(glVertexPointer);
    LOAD_GL_FUNC(glViewport);

    m_isLoaded = true;
}