[Piglit] [PATCH 3/9] glean: Use piglit-dispatch instead of calling piglit_get_proc_address().

Eric Anholt eric at anholt.net
Tue Jan 28 18:52:55 PST 2014


---

This patch was actually hand-written, so I haven't trimmed anything.

 tests/glean/geomrend.cpp       |   6 -
 tests/glean/glutils.cpp        |  13 --
 tests/glean/glutils.h          |   5 -
 tests/glean/tapi2.cpp          | 293 ++++++++---------------------
 tests/glean/tapi2.h            |   1 -
 tests/glean/tblend.cpp         |  47 +----
 tests/glean/tbufferobject.cpp  |  82 +++-----
 tests/glean/tdepthstencil.cpp  |   9 +-
 tests/glean/tfbo.cpp           | 255 +++++++++----------------
 tests/glean/tfragprog1.cpp     |  56 ++----
 tests/glean/tglsl1.cpp         | 288 +++++-----------------------
 tests/glean/tglsl1.h           |   1 -
 tests/glean/toccluqry.cpp      | 111 ++++-------
 tests/glean/tpbo.cpp           | 329 +++++++++++++++-----------------
 tests/glean/tpointatten.cpp    |  18 +-
 tests/glean/tpointsprite.cpp   |  12 +-
 tests/glean/tshaderapi.cpp     | 171 ++++-------------
 tests/glean/tshaderapi.h       |   2 -
 tests/glean/tstencil2.cpp      |  94 +++-------
 tests/glean/tstencil2.h        |   2 -
 tests/glean/ttexcombine.cpp    |  14 +-
 tests/glean/ttexswizzle.cpp    |  19 +-
 tests/glean/ttexunits.cpp      |  29 +--
 tests/glean/tvertarraybgra.cpp |  20 +-
 tests/glean/tvertattrib.cpp    | 417 ++++++++++-------------------------------
 tests/glean/tvertattrib.h      |   1 -
 tests/glean/tvertprog1.cpp     |  51 ++---
 27 files changed, 653 insertions(+), 1693 deletions(-)

diff --git a/tests/glean/geomrend.cpp b/tests/glean/geomrend.cpp
index 4d6d085..dcd7f30 100644
--- a/tests/glean/geomrend.cpp
+++ b/tests/glean/geomrend.cpp
@@ -247,10 +247,7 @@ bool GeomRenderer::renderPrimitives(GLenum mode)
         // Should we lock?
         if (compileArrays)
         {
-            PFNGLLOCKARRAYSEXTPROC glLockArraysEXT = 0;
             assert(GLUtils::haveExtension("GL_EXT_compiled_vertex_array"));
-            glLockArraysEXT = reinterpret_cast<PFNGLLOCKARRAYSEXTPROC>
-                (GLUtils::getProcAddress("glLockArraysEXT"));
             glLockArraysEXT(0, arrayLength);
         }
 
@@ -277,10 +274,7 @@ bool GeomRenderer::renderPrimitives(GLenum mode)
         // Done.  If we locked, unlock.
         if (compileArrays)
         {
-            PFNGLUNLOCKARRAYSEXTPROC glUnlockArraysEXT = 0;
             assert(GLUtils::haveExtension("GL_EXT_compiled_vertex_array"));
-            glUnlockArraysEXT = reinterpret_cast<PFNGLUNLOCKARRAYSEXTPROC>
-                (GLUtils::getProcAddress("glUnlockArraysEXT"));
             glUnlockArraysEXT();
         }
     }
diff --git a/tests/glean/glutils.cpp b/tests/glean/glutils.cpp
index 81be2f0..12d9b88 100644
--- a/tests/glean/glutils.cpp
+++ b/tests/glean/glutils.cpp
@@ -110,19 +110,6 @@ getVersion()
    return atof((const char *) version);
 }
 
-
-///////////////////////////////////////////////////////////////////////////////
-// getProcAddress: Get address of an OpenGL or window-system-binding function.
-//	This belongs here, rather than as a member of RenderingContext, because
-//	on Windows it must only be applied to the *current* context.  (The
-//	return value on Windows is context-dependent, and wglGetProcAddress
-//	doesn't take a rendering context as an argument.)
-///////////////////////////////////////////////////////////////////////////////
-void
-(APIENTRY *getProcAddress(const char* name))() {
-	return piglit_get_proc_address(name);
-} // getProcAddress
-
 ///////////////////////////////////////////////////////////////////////////////
 // logGLErrors: Check for OpenGL errors and log any that have occurred.
 ///////////////////////////////////////////////////////////////////////////////
diff --git a/tests/glean/glutils.h b/tests/glean/glutils.h
index 0015d13..b943a21 100644
--- a/tests/glean/glutils.h
+++ b/tests/glean/glutils.h
@@ -54,11 +54,6 @@ inline bool haveExtension(const char* name) {
 	return haveExtensions(name);
 }
 
-// Get a pointer to a function (usually, an extension function).
-// Like haveExtension, we have to do this here rather than in
-// RenderingContext.
-void (APIENTRY *getProcAddress(const char* name))();
-
 // Return GL renderer version as a float (1.1, 2.0, etc)
 float getVersion();
 
diff --git a/tests/glean/tapi2.cpp b/tests/glean/tapi2.cpp
index 9a88f9f..ab87279 100644
--- a/tests/glean/tapi2.cpp
+++ b/tests/glean/tapi2.cpp
@@ -40,143 +40,6 @@
 
 namespace GLEAN {
 
-
-static PFNGLATTACHSHADERPROC glAttachShader_func = NULL;
-static PFNGLBINDATTRIBLOCATIONPROC glBindAttribLocation_func = NULL;
-static PFNGLCOMPILESHADERPROC glCompileShader_func = NULL;
-static PFNGLCREATEPROGRAMPROC glCreateProgram_func = NULL;
-static PFNGLCREATESHADERPROC glCreateShader_func = NULL;
-static PFNGLDELETEPROGRAMPROC glDeleteProgram_func = NULL;
-static PFNGLDELETESHADERPROC glDeleteShader_func = NULL;
-static PFNGLDISABLEVERTEXATTRIBARRAYPROC glDisableVertexAttribArray_func = NULL;
-static PFNGLENABLEVERTEXATTRIBARRAYPROC glEnableVertexAttribArray_func = NULL;
-static PFNGLGETATTACHEDSHADERSPROC glGetAttachedShaders_func = NULL;
-static PFNGLGETATTRIBLOCATIONPROC glGetAttribLocation_func = NULL;
-static PFNGLGETPROGRAMINFOLOGPROC glGetProgramInfoLog_func = NULL;
-static PFNGLGETSHADERINFOLOGPROC glGetShaderInfoLog_func = NULL;
-static PFNGLGETSHADERIVPROC glGetShaderiv_func = NULL;
-static PFNGLGETPROGRAMIVPROC glGetProgramiv_func = NULL;
-static PFNGLGETSHADERSOURCEPROC glGetShaderSource_func = NULL;
-static PFNGLGETUNIFORMFVPROC glGetUniformfv_func = NULL;
-static PFNGLGETUNIFORMLOCATIONPROC glGetUniformLocation_func = NULL;
-static PFNGLISPROGRAMPROC glIsProgram_func = NULL;
-static PFNGLISSHADERPROC glIsShader_func = NULL;
-static PFNGLLINKPROGRAMPROC glLinkProgram_func = NULL;
-static PFNGLSHADERSOURCEPROC glShaderSource_func = NULL;
-static PFNGLUNIFORM1FVPROC glUniform1fv_func = NULL;
-static PFNGLUNIFORM2FVPROC glUniform2fv_func = NULL;
-static PFNGLUNIFORM3FVPROC glUniform3fv_func = NULL;
-static PFNGLUNIFORM4FVPROC glUniform4fv_func = NULL;
-static PFNGLUNIFORM1FPROC glUniform1f_func = NULL;
-static PFNGLUNIFORM2FPROC glUniform2f_func = NULL;
-static PFNGLUNIFORM3FPROC glUniform3f_func = NULL;
-static PFNGLUNIFORM4FPROC glUniform4f_func = NULL;
-static PFNGLUNIFORM1IPROC glUniform1i_func = NULL;
-static PFNGLUNIFORM2IPROC glUniform2i_func = NULL;
-static PFNGLUNIFORM3IPROC glUniform3i_func = NULL;
-static PFNGLUNIFORM4IPROC glUniform4i_func = NULL;
-static PFNGLUNIFORM1IVPROC glUniform1iv_func = NULL;
-static PFNGLUNIFORM2IVPROC glUniform2iv_func = NULL;
-static PFNGLUNIFORM3IVPROC glUniform3iv_func = NULL;
-static PFNGLUNIFORM4IVPROC glUniform4iv_func = NULL;
-static PFNGLUNIFORMMATRIX2FVPROC glUniformMatrix2fv_func = NULL;
-static PFNGLUNIFORMMATRIX3FVPROC glUniformMatrix3fv_func = NULL;
-static PFNGLUNIFORMMATRIX4FVPROC glUniformMatrix4fv_func = NULL;
-static PFNGLUSEPROGRAMPROC glUseProgram_func = NULL;
-static PFNGLVALIDATEPROGRAMPROC glValidateProgram_func = NULL;
-
-static PFNGLVERTEXATTRIB1FPROC glVertexAttrib1f_func = NULL;
-static PFNGLVERTEXATTRIB2FPROC glVertexAttrib2f_func = NULL;
-static PFNGLVERTEXATTRIB3FPROC glVertexAttrib3f_func = NULL;
-static PFNGLVERTEXATTRIB4FPROC glVertexAttrib4f_func = NULL;
-static PFNGLVERTEXATTRIBPOINTERPROC glVertexAttribPointer_func = NULL;
-
-static PFNGLSTENCILOPSEPARATEPROC glStencilOpSeparate_func = NULL;
-static PFNGLSTENCILFUNCSEPARATEPROC glStencilFuncSeparate_func = NULL;
-static PFNGLSTENCILMASKSEPARATEPROC glStencilMaskSeparate_func = NULL;
-
-static PFNGLBLENDEQUATIONSEPARATEPROC glBlendEquationSeparate_func = NULL;
-static PFNGLDRAWBUFFERSPROC glDrawBuffers_func = NULL;
-
-
-
-// Get ptrs to 2.0 API functions.
-// \param errorFunc  returns name of API function in case of error
-// \return true for success, false for error
-bool
-API2Test::getFunctions_2_0(const char **errorFunc)
-{
-#define GET(PTR, TYPE, STR)                          \
-	PTR  = (TYPE) GLUtils::getProcAddress(STR);  \
-	if (!PTR) {				     \
-		*errorFunc = STR;                    \
-		return false;                        \
-        }
-
-	// shading language
-	GET(glAttachShader_func, PFNGLATTACHSHADERPROC, "glAttachShader");
-	GET(glBindAttribLocation_func, PFNGLBINDATTRIBLOCATIONPROC, "glBindAttribLocation");
-	GET(glCompileShader_func, PFNGLCOMPILESHADERPROC, "glCompileShader");
-	GET(glCreateProgram_func, PFNGLCREATEPROGRAMPROC, "glCreateProgram");
-	GET(glCreateShader_func, PFNGLCREATESHADERPROC, "glCreateShader");
-	GET(glDeleteProgram_func, PFNGLDELETEPROGRAMPROC, "glDeleteProgram");
-	GET(glDeleteShader_func, PFNGLDELETESHADERPROC, "glDeleteShader");
-	GET(glDisableVertexAttribArray_func, PFNGLDISABLEVERTEXATTRIBARRAYPROC, "glDisableVertexAttribArray");
-	GET(glEnableVertexAttribArray_func, PFNGLENABLEVERTEXATTRIBARRAYPROC, "glEnableVertexAttribArray");
-	GET(glGetAttachedShaders_func, PFNGLGETATTACHEDSHADERSPROC, "glGetAttachedShaders");
-	GET(glGetAttribLocation_func, PFNGLGETATTRIBLOCATIONPROC, "glGetAttribLocation");
-	GET(glGetProgramInfoLog_func, PFNGLGETPROGRAMINFOLOGPROC, "glGetProgramInfoLog");
-	GET(glGetShaderInfoLog_func, PFNGLGETSHADERINFOLOGPROC, "glGetShaderInfoLog");
-	GET(glGetProgramiv_func, PFNGLGETPROGRAMIVPROC, "glGetProgramiv");
-	GET(glGetShaderiv_func, PFNGLGETSHADERIVPROC, "glGetShaderiv");
-	GET(glGetShaderSource_func, PFNGLGETSHADERSOURCEPROC, "glGetShaderSource");
-	GET(glGetUniformLocation_func, PFNGLGETUNIFORMLOCATIONPROC, "glGetUniformLocation");
-	GET(glGetUniformfv_func, PFNGLGETUNIFORMFVPROC, "glGetUniformfv");
-	GET(glIsProgram_func, PFNGLISPROGRAMPROC, "glIsProgram");
-	GET(glIsShader_func, PFNGLISSHADERPROC, "glIsShader");
-	GET(glLinkProgram_func, PFNGLLINKPROGRAMPROC, "glLinkProgram");
-	GET(glShaderSource_func, PFNGLSHADERSOURCEPROC, "glShaderSource");
-	GET(glUniform1f_func, PFNGLUNIFORM1FPROC, "glUniform1f");
-	GET(glUniform2f_func, PFNGLUNIFORM2FPROC, "glUniform2f");
-	GET(glUniform3f_func, PFNGLUNIFORM3FPROC, "glUniform3f");
-	GET(glUniform4f_func, PFNGLUNIFORM4FPROC, "glUniform4f");
-	GET(glUniform1fv_func, PFNGLUNIFORM1FVPROC, "glUniform1fv");
-	GET(glUniform2fv_func, PFNGLUNIFORM2FVPROC, "glUniform2fv");
-	GET(glUniform3fv_func, PFNGLUNIFORM3FVPROC, "glUniform3fv");
-	GET(glUniform4fv_func, PFNGLUNIFORM3FVPROC, "glUniform4fv");
-	GET(glUniform1i_func, PFNGLUNIFORM1IPROC, "glUniform1i");
-	GET(glUniform2i_func, PFNGLUNIFORM2IPROC, "glUniform2i");
-	GET(glUniform3i_func, PFNGLUNIFORM3IPROC, "glUniform3i");
-	GET(glUniform4i_func, PFNGLUNIFORM4IPROC, "glUniform4i");
-	GET(glUniform1iv_func, PFNGLUNIFORM1IVPROC, "glUniform1iv");
-	GET(glUniform2iv_func, PFNGLUNIFORM2IVPROC, "glUniform2iv");
-	GET(glUniform3iv_func, PFNGLUNIFORM3IVPROC, "glUniform3iv");
-	GET(glUniform4iv_func, PFNGLUNIFORM4IVPROC, "glUniform4iv");
-	GET(glUniformMatrix2fv_func, PFNGLUNIFORMMATRIX2FVPROC, "glUniformMatrix2fv");
-	GET(glUniformMatrix3fv_func, PFNGLUNIFORMMATRIX3FVPROC, "glUniformMatrix3fv");
-	GET(glUniformMatrix4fv_func, PFNGLUNIFORMMATRIX4FVPROC, "glUniformMatrix4fv");
-	GET(glUseProgram_func, PFNGLUSEPROGRAMPROC, "glUseProgram");
-	GET(glValidateProgram_func, PFNGLVALIDATEPROGRAMPROC, "glValidateProgram");
-	GET(glVertexAttrib1f_func, PFNGLVERTEXATTRIB1FPROC, "glVertexAttrib1f");
-	GET(glVertexAttrib2f_func, PFNGLVERTEXATTRIB2FPROC, "glVertexAttrib2f");
-	GET(glVertexAttrib3f_func, PFNGLVERTEXATTRIB3FPROC, "glVertexAttrib3f");
-	GET(glVertexAttrib4f_func, PFNGLVERTEXATTRIB4FPROC, "glVertexAttrib4f");
-	GET(glVertexAttribPointer_func, PFNGLVERTEXATTRIBPOINTERPROC, "glVertexAttribPointer");
-
-	// stencil
-	GET(glStencilOpSeparate_func, PFNGLSTENCILOPSEPARATEPROC, "glStencilOpSeparate");
-	GET(glStencilFuncSeparate_func, PFNGLSTENCILFUNCSEPARATEPROC, "glStencilFuncSeparate");
-	GET(glStencilMaskSeparate_func, PFNGLSTENCILMASKSEPARATEPROC, "glStencilMaskSeparate");
-
-	// misc
-	GET(glBlendEquationSeparate_func, PFNGLBLENDEQUATIONSEPARATEPROC, "glBlendEquationSeparate");
-	GET(glDrawBuffers_func, PFNGLDRAWBUFFERSPROC, "glDrawBuffers");
-
-	return true;
-#undef GET
-}
-
-
 bool
 API2Test::setup(void)
 {
@@ -186,14 +49,6 @@ API2Test::setup(void)
 		return false;
 	}
 
-	const char *errorFunc;
-	if (!getFunctions_2_0(&errorFunc)) {
-		env->log << "Unable to get pointer to OpenGL 2.0 function '"
-			 << errorFunc
-			 << "'\n";
-		return false;
-	}
-
 	GLenum err = glGetError();
 	assert(!err);  // should be OK
 
@@ -311,14 +166,14 @@ API2Test::renderQuadWithArrays(GLint attr, const GLfloat value[4],
 
 	glVertexPointer(3, GL_FLOAT, 0, vertcoords);
 	glEnableClientState(GL_VERTEX_ARRAY);
-	glVertexAttribPointer_func(attr, 4, GL_FLOAT, GL_FALSE, 0, values);
-	glEnableVertexAttribArray_func(attr);
+	glVertexAttribPointer(attr, 4, GL_FLOAT, GL_FALSE, 0, values);
+	glEnableVertexAttribArray(attr);
 
 	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 	glDrawArrays(GL_POLYGON, 0, 4);
 
 	glDisableClientState(GL_VERTEX_ARRAY);
-	glDisableVertexAttribArray_func(attr);
+	glDisableVertexAttribArray(attr);
 
 	// read a pixel from lower-left corner of rendered quad
 	glReadPixels(windowSize / 2 - 2, windowSize / 2 - 2, 1, 1,
@@ -330,34 +185,34 @@ GLuint
 API2Test::loadAndCompileShader(GLenum target, const char *text)
 {
 	GLint stat, val;
-	GLuint shader = glCreateShader_func(target);
+	GLuint shader = glCreateShader(target);
 	if (!shader) {
 		REPORT_FAILURE("glCreateShader failed (fragment)");
 		return 0;
 	}
-	glShaderSource_func(shader, 1,
-			    (const GLchar **) &text, NULL);
-	glCompileShader_func(shader);
-	glGetShaderiv_func(shader, GL_COMPILE_STATUS, &stat);
+	glShaderSource(shader, 1,
+                       (const GLchar **) &text, NULL);
+	glCompileShader(shader);
+	glGetShaderiv(shader, GL_COMPILE_STATUS, &stat);
 	if (!stat) {
 		REPORT_FAILURE_T("glShaderSource or glCompileShader failed", target);
 		return 0;
 	}
-        if (!glIsShader_func(shader)) {
+        if (!glIsShader(shader)) {
 		REPORT_FAILURE("glIsShader failed (fragment)");
 		return false;
 	}
-	glGetShaderiv_func(shader, GL_SHADER_TYPE, &val);
+	glGetShaderiv(shader, GL_SHADER_TYPE, &val);
 	if (val != (GLint) target) {
 		REPORT_FAILURE_T("glGetShaderiv(GL_SHADER_TYPE) failed", target);
 		return 0;
 	}
-	glGetShaderiv_func(shader, GL_COMPILE_STATUS, &val);
+	glGetShaderiv(shader, GL_COMPILE_STATUS, &val);
 	if (val != GL_TRUE) {
 		REPORT_FAILURE_T("glGetShaderiv(GL_COMPILE_STATUS) failed", target);
 		return 0;
 	}
-	glGetShaderiv_func(shader, GL_SHADER_SOURCE_LENGTH, &val);
+	glGetShaderiv(shader, GL_SHADER_SOURCE_LENGTH, &val);
         // Note: some OpenGLs return a 1-char shorter length than strlen(text)
 	if (abs(val - (int) strlen(text)) > 1) {
 		REPORT_FAILURE_T("glGetShaderiv(GL_SHADER_SOURCE_LENGTH) failed", target);
@@ -370,12 +225,12 @@ API2Test::loadAndCompileShader(GLenum target, const char *text)
 GLuint
 API2Test::createProgram(GLuint vertShader, GLuint fragShader)
 {
-	GLuint program = glCreateProgram_func();
+	GLuint program = glCreateProgram();
 	if (vertShader)
-		glAttachShader_func(program, vertShader);
+		glAttachShader(program, vertShader);
 	if (fragShader)
-		glAttachShader_func(program, fragShader);
-	glLinkProgram_func(program);
+		glAttachShader(program, fragShader);
+	glLinkProgram(program);
 	return program;
 }
 
@@ -407,12 +262,12 @@ API2Test::testShaderObjectFuncs(void)
 		REPORT_FAILURE("glCreateProgram failed");
 		return false;
 	}
-	glGetProgramiv_func(program, GL_LINK_STATUS, &stat);
+	glGetProgramiv(program, GL_LINK_STATUS, &stat);
 	if (!stat) {
 		REPORT_FAILURE("glLinkProgram failed");
 		return false;
 	}
-	glUseProgram_func(program);
+	glUseProgram(program);
 
 	glGetIntegerv(GL_CURRENT_PROGRAM, &val);
 	if (val != (GLint) program) {
@@ -426,19 +281,19 @@ API2Test::testShaderObjectFuncs(void)
 		return false;
 	}
 
-        if (!glIsProgram_func(program)) {
+        if (!glIsProgram(program)) {
 		REPORT_FAILURE("glIsProgram failed");
 		return false;
 	}
 
 	GLuint objects[2];
 	GLsizei count;
-	glGetProgramiv_func(program, GL_ATTACHED_SHADERS, &val);
+	glGetProgramiv(program, GL_ATTACHED_SHADERS, &val);
 	if (val != 2) {
 		REPORT_FAILURE("glGetProgramiv(GL_ATTACHED_SHADERS) failed");
 		return false;
 	}
-	glGetAttachedShaders_func(program, 2, &count, objects);
+	glGetAttachedShaders(program, 2, &count, objects);
 	if (count != 2) {
 		REPORT_FAILURE("glGetAttachedShaders failed (wrong count)");
 		return false;
@@ -452,52 +307,52 @@ API2Test::testShaderObjectFuncs(void)
 		return false;
 	}
 
-	glValidateProgram_func(program);
-	glGetProgramiv_func(program, GL_VALIDATE_STATUS, &stat);
+	glValidateProgram(program);
+	glGetProgramiv(program, GL_VALIDATE_STATUS, &stat);
 	if (!stat) {
 		REPORT_FAILURE("glValidateProgram failed");
 		return false;
 	}
 
 	// Delete vertex shader
-	glDeleteShader_func(vertShader);
-	if (!glIsShader_func(vertShader)) {
+	glDeleteShader(vertShader);
+	if (!glIsShader(vertShader)) {
 		// the shader is still attached so the handle should be valid
 		REPORT_FAILURE("glIsShader(deleted shader) failed");
 		return false;
 	}
-	glGetShaderiv_func(vertShader, GL_DELETE_STATUS, &stat);
+	glGetShaderiv(vertShader, GL_DELETE_STATUS, &stat);
 	if (stat != GL_TRUE) {
 		REPORT_FAILURE("Incorrect shader delete status");
 		return false;
 	}
 
 	// Delete fragment shader
-	glDeleteShader_func(fragShader);
+	glDeleteShader(fragShader);
 
 	// Delete program object
-	glDeleteProgram_func(program);
-	if (!glIsProgram_func(program)) {
+	glDeleteProgram(program);
+	if (!glIsProgram(program)) {
 		// the program is still in use so the handle should be valid
 		REPORT_FAILURE("glIsProgram(deleted program) failed");
 		return false;
 	}
-	glGetProgramiv_func(program, GL_DELETE_STATUS, &stat);
+	glGetProgramiv(program, GL_DELETE_STATUS, &stat);
 	if (stat != GL_TRUE) {
 		REPORT_FAILURE("Incorrect program delete status");
 		return false;
 	}
 
 	// now unbind the program
-	glUseProgram_func(0);
-	stat = glIsProgram_func(program);
+	glUseProgram(0);
+	stat = glIsProgram(program);
 	if (stat) {
 		// the program and handle should have really been deleted now
 		REPORT_FAILURE("glIsProgram(deleted program) failed");
 		return false;
 	}
 
-	glGetProgramiv_func(program, GL_DELETE_STATUS, &stat);
+	glGetProgramiv(program, GL_DELETE_STATUS, &stat);
 	err = glGetError();
 	if (!err) {
 		// the program and handle should have been deleted now
@@ -534,24 +389,24 @@ API2Test::testUniformfFuncs(void)
 		REPORT_FAILURE("glCreateProgram (uniform test) failed");
 		return false;
 	}
-	glUseProgram_func(program);
+	glUseProgram(program);
 
-	uf1 = glGetUniformLocation_func(program, "uf1");
+	uf1 = glGetUniformLocation(program, "uf1");
 	if (uf1 < 0) {
 		REPORT_FAILURE("glGetUniform \"uf1\" failed");
 		return false;
 	}
-	uf2 = glGetUniformLocation_func(program, "uf2");
+	uf2 = glGetUniformLocation(program, "uf2");
 	if (uf2 < 0) {
 		REPORT_FAILURE("glGetUniform \"uf2\" failed");
 		return false;
 	}
-	uf3 = glGetUniformLocation_func(program, "uf3");
+	uf3 = glGetUniformLocation(program, "uf3");
 	if (uf3 < 0) {
 		REPORT_FAILURE("glGetUniform \"uf3\" failed");
 		return false;
 	}
-	uf4 = glGetUniformLocation_func(program, "uf4");
+	uf4 = glGetUniformLocation(program, "uf4");
 	if (uf4 < 0) {
 		REPORT_FAILURE("glGetUniform \"uf4\" failed");
 		return false;
@@ -565,10 +420,10 @@ API2Test::testUniformfFuncs(void)
 	expected[1] = 0.2;
 	expected[2] = 0.3;
 	expected[3] = 0.4;
-	glUniform1f_func(uf1, expected[0]);
-	glUniform2f_func(uf2, 0.0, expected[1]);
-	glUniform3f_func(uf3, 0.0, 0.0, expected[2]);
-	glUniform4f_func(uf4, 0.0, 0.0, 0.0, expected[3]);
+	glUniform1f(uf1, expected[0]);
+	glUniform2f(uf2, 0.0, expected[1]);
+	glUniform3f(uf3, 0.0, 0.0, expected[2]);
+	glUniform4f(uf4, 0.0, 0.0, 0.0, expected[3]);
 	renderQuad(pixel);
 	if (!equalColors(pixel, expected)) {
 		REPORT_FAILURE("glUniform[1234]f failed");
@@ -585,13 +440,13 @@ API2Test::testUniformfFuncs(void)
 	expected[2] = 0.7;
 	expected[3] = 0.6;
 	u[0] = expected[0];
-	glUniform1fv_func(uf1, 1, u);
+	glUniform1fv(uf1, 1, u);
 	u[0] = 0.0;  u[1] = expected[1];
-	glUniform2fv_func(uf2, 1, u);
+	glUniform2fv(uf2, 1, u);
 	u[0] = 0.0;  u[1] = 0.0;  u[2] = expected[2];
-	glUniform3fv_func(uf3, 1, u);
+	glUniform3fv(uf3, 1, u);
 	u[0] = 0.0;  u[1] = 0.0;  u[2] = 0.0;  u[3] = expected[3];
-	glUniform4fv_func(uf4, 1, u);
+	glUniform4fv(uf4, 1, u);
 	renderQuad(pixel);
 	if (!equalColors(pixel, expected)) {
 		REPORT_FAILURE("glUniform[1234]f failed");
@@ -599,8 +454,8 @@ API2Test::testUniformfFuncs(void)
 	}
 
 	// Test glGetUniformfv
-	glUniform4fv_func(uf4, 1, expected);
-	glGetUniformfv_func(program, uf4, value);
+	glUniform4fv(uf4, 1, expected);
+	glGetUniformfv(program, uf4, value);
 	if (value[0] != expected[0] ||
 	    value[1] != expected[1] ||
 	    value[2] != expected[2] ||
@@ -636,24 +491,24 @@ API2Test::testUniformiFuncs(void)
 		REPORT_FAILURE("glCreateProgram (uniform test) failed");
 		return false;
 	}
-	glUseProgram_func(program);
+	glUseProgram(program);
 
-	ui1 = glGetUniformLocation_func(program, "ui1");
+	ui1 = glGetUniformLocation(program, "ui1");
 	if (ui1 < 0) {
 		REPORT_FAILURE("glGetUniform \"ui1\" failed");
 		return false;
 	}
-	ui2 = glGetUniformLocation_func(program, "ui2");
+	ui2 = glGetUniformLocation(program, "ui2");
 	if (ui2 < 0) {
 		REPORT_FAILURE("glGetUniform \"ui2\" failed");
 		return false;
 	}
-	ui3 = glGetUniformLocation_func(program, "ui3");
+	ui3 = glGetUniformLocation(program, "ui3");
 	if (ui3 < 0) {
 		REPORT_FAILURE("glGetUniform \"ui3\" failed");
 		return false;
 	}
-	ui4 = glGetUniformLocation_func(program, "ui4");
+	ui4 = glGetUniformLocation(program, "ui4");
 	if (ui4 < 0) {
 		REPORT_FAILURE("glGetUniform \"ui4\" failed");
 		return false;
@@ -671,10 +526,10 @@ API2Test::testUniformiFuncs(void)
 	expected[1] = 0.2;
 	expected[2] = 0.3;
 	expected[3] = 0.4;
-	glUniform1i_func(ui1, expectedInt[0]);
-	glUniform2i_func(ui2, 0, expectedInt[1]);
-	glUniform3i_func(ui3, 0, 0, expectedInt[2]);
-	glUniform4i_func(ui4, 0, 0, 0, expectedInt[3]);
+	glUniform1i(ui1, expectedInt[0]);
+	glUniform2i(ui2, 0, expectedInt[1]);
+	glUniform3i(ui3, 0, 0, expectedInt[2]);
+	glUniform4i(ui4, 0, 0, 0, expectedInt[3]);
 	renderQuad(pixel);
 	if (!equalColors(pixel, expected)) {
 		REPORT_FAILURE("glUniform[1234]i failed");
@@ -693,13 +548,13 @@ API2Test::testUniformiFuncs(void)
 	expected[2] = 0.7;
 	expected[3] = 0.6;
 	u[0] = expectedInt[0];
-	glUniform1iv_func(ui1, 1, u);
+	glUniform1iv(ui1, 1, u);
 	u[0] = 0;  u[1] = expectedInt[1];
-	glUniform2iv_func(ui2, 1, u);
+	glUniform2iv(ui2, 1, u);
 	u[0] = 0;  u[1] = 0;  u[2] = expectedInt[2];
-	glUniform3iv_func(ui3, 1, u);
+	glUniform3iv(ui3, 1, u);
 	u[0] = 0;  u[1] = 0;  u[2] = 0;  u[3] = expectedInt[3];
-	glUniform4iv_func(ui4, 1, u);
+	glUniform4iv(ui4, 1, u);
 	renderQuad(pixel);
 	if (!equalColors(pixel, expected)) {
 		REPORT_FAILURE("glUniform[1234]i failed");
@@ -736,7 +591,7 @@ API2Test::testShaderAttribs(void)
 		REPORT_FAILURE("glCreateProgram (uniform test) failed");
 		return false;
 	}
-	glUseProgram_func(program);
+	glUseProgram(program);
 
 	static const GLfloat testColors[3][4] = {
 		{ 1.0, 0.5, 0.25, 0.0 },
@@ -745,7 +600,7 @@ API2Test::testShaderAttribs(void)
 	};
 
 	// let compiler allocate the attribute location
-	const GLint attr = glGetAttribLocation_func(program, "generic");
+	const GLint attr = glGetAttribLocation(program, "generic");
 	if (attr < 0) {
 		REPORT_FAILURE("glGetAttribLocation failed");
 		return false;
@@ -769,9 +624,9 @@ API2Test::testShaderAttribs(void)
 
 	// Test explicit attribute binding.
 	const GLint bindAttr = 6;  // XXX a non-colliding alias
-	glBindAttribLocation_func(program, bindAttr, "generic");
-	glLinkProgram_func(program);
-	GLint loc = glGetAttribLocation_func(program, "generic");
+	glBindAttribLocation(program, bindAttr, "generic");
+	glLinkProgram(program);
+	GLint loc = glGetAttribLocation(program, "generic");
 	if (loc != bindAttr) {
 		REPORT_FAILURE("glBindAttribLocation failed");
 		return false;
@@ -799,8 +654,8 @@ API2Test::testStencilFuncSeparate(void)
 	glGetIntegerv(GL_STENCIL_BITS, &stencilBits);
 	stencilMax = (1 << stencilBits) - 1;
 
-	glStencilFuncSeparate_func(GL_FRONT, GL_LEQUAL, 12, 0xf);
-	glStencilFuncSeparate_func(GL_BACK, GL_GEQUAL, 13, 0xe);
+	glStencilFuncSeparate(GL_FRONT, GL_LEQUAL, 12, 0xf);
+	glStencilFuncSeparate(GL_BACK, GL_GEQUAL, 13, 0xe);
 
 	glGetIntegerv(GL_STENCIL_BACK_FUNC, &val);
 	if (val != GL_GEQUAL) {
@@ -848,8 +703,8 @@ API2Test::testStencilOpSeparate(void)
 	GLint val;
 
 	// face, fail, zfail, zpass
-	glStencilOpSeparate_func(GL_FRONT, GL_INVERT, GL_ZERO, GL_INCR);
-	glStencilOpSeparate_func(GL_BACK, GL_INCR, GL_KEEP, GL_REPLACE);
+	glStencilOpSeparate(GL_FRONT, GL_INVERT, GL_ZERO, GL_INCR);
+	glStencilOpSeparate(GL_BACK, GL_INCR, GL_KEEP, GL_REPLACE);
 
 	glGetIntegerv(GL_STENCIL_BACK_FAIL, &val);
 	if (val != GL_INCR) {
@@ -897,8 +752,8 @@ API2Test::testStencilMaskSeparate(void)
 	GLint val;
 
 	// face, fail, zfail, zpass
-	glStencilMaskSeparate_func(GL_BACK, 0xa);
-	glStencilMaskSeparate_func(GL_FRONT, 0xb);
+	glStencilMaskSeparate(GL_BACK, 0xa);
+	glStencilMaskSeparate(GL_FRONT, 0xb);
 
 	glGetIntegerv(GL_STENCIL_BACK_WRITEMASK, &val);
 	if (val != 0xa) {
@@ -921,7 +776,7 @@ API2Test::testBlendEquationSeparate(void)
 {
 	GLint val;
 
-	glBlendEquationSeparate_func(GL_MAX, GL_FUNC_SUBTRACT);
+	glBlendEquationSeparate(GL_MAX, GL_FUNC_SUBTRACT);
 
 	glGetIntegerv(GL_BLEND_EQUATION, &val);
 	if (val != GL_MAX) {
@@ -960,7 +815,7 @@ API2Test::testDrawBuffers(void)
 	for (i = 0; i < n; i++) {
 		buffers[i] = (i & 1) ? GL_FRONT_LEFT : GL_BACK_LEFT;
 	}
-	glDrawBuffers_func(n, buffers);
+	glDrawBuffers(n, buffers);
 
 	for (i = 0; i < n; i++) {
 		glGetIntegerv(GL_DRAW_BUFFER0 + i, &val);
diff --git a/tests/glean/tapi2.h b/tests/glean/tapi2.h
index 6e84fd5..36cf587 100644
--- a/tests/glean/tapi2.h
+++ b/tests/glean/tapi2.h
@@ -55,7 +55,6 @@ private:
         typedef bool (API2Test::*TestFunc)(void);
 
 	GLfloat tolerance[5];
-        bool getFunctions_2_0(const char **errorFunc);
 
         GLuint loadAndCompileShader(GLenum target, const char *str);
         GLuint createProgram(GLuint vertShader, GLuint fragShader);
diff --git a/tests/glean/tblend.cpp b/tests/glean/tblend.cpp
index a0f67b7..e96c2ab 100644
--- a/tests/glean/tblend.cpp
+++ b/tests/glean/tblend.cpp
@@ -40,13 +40,6 @@
 
 #define HUGE_STEP 1000
 
-namespace GLEAN {
-static PFNGLBLENDFUNCSEPARATEPROC glBlendFuncSeparate_func = NULL;
-static PFNGLBLENDCOLORPROC glBlendColor_func = NULL;
-static PFNGLBLENDEQUATIONPROC glBlendEquation_func = NULL;
-static PFNGLBLENDEQUATIONSEPARATEPROC glBlendEquationSeparate_func = NULL;
-}
-
 //namespace {
 
 struct enumNameMapping {
@@ -520,15 +513,15 @@ BlendFuncTest::runFactors(GLenum srcFactorRGB, GLenum srcFactorA,
 	RandomBitsDouble srcARand(16, 42);
 
 	if (haveSepFunc)
-		glBlendFuncSeparate_func(srcFactorRGB, dstFactorRGB,
-					 srcFactorA, dstFactorA);
+		glBlendFuncSeparate(srcFactorRGB, dstFactorRGB,
+                                    srcFactorA, dstFactorA);
 	else
 		glBlendFunc(srcFactorRGB, dstFactorRGB);
 
 	if (haveBlendEquationSep)
-		glBlendEquationSeparate_func(opRGB, opA);
+		glBlendEquationSeparate(opRGB, opA);
 	else if (haveBlendEquation)
-		glBlendEquation_func(opRGB);
+		glBlendEquation(opRGB);
 
 	glEnable(GL_BLEND);
 
@@ -725,49 +718,29 @@ BlendFuncTest::runOne(BlendFuncResult& r, Window& w) {
 	unsigned testNo, testStride;
 
 	// test for features, get function pointers
-	if (GLUtils::getVersion() >= 1.4) {
+	if (GLUtils::getVersion() >= 1.4 ||
+            GLUtils::haveExtension("GL_EXT_blend_func_separate")) {
 		haveSepFunc = true;
-		glBlendFuncSeparate_func = (PFNGLBLENDFUNCSEPARATEPROC)
-			GLUtils::getProcAddress("glBlendFuncSeparate");
-	}
-	else if (GLUtils::haveExtension("GL_EXT_blend_func_separate")) {
-		haveSepFunc = true;
-		glBlendFuncSeparate_func = (PFNGLBLENDFUNCSEPARATEPROC)
-			GLUtils::getProcAddress("glBlendFuncSeparateEXT");
 	}
 
-	if (GLUtils::getVersion() >= 1.4) {
-		haveBlendColor = true;
-		glBlendColor_func = (PFNGLBLENDCOLORPROC)
-			GLUtils::getProcAddress("glBlendColor");
-	}
-	else if (GLUtils::haveExtension("GL_EXT_blend_color")) {
+	if (GLUtils::getVersion() >= 1.4 ||
+            GLUtils::haveExtension("GL_EXT_blend_color")) {
 		haveBlendColor = true;
-		glBlendColor_func = (PFNGLBLENDCOLORPROC)
-			GLUtils::getProcAddress("glBlendColorEXT");
 	}
 
 	if (GLUtils::getVersion() >= 1.4) {
 		haveBlendEquation = true;
-		glBlendEquation_func = (PFNGLBLENDEQUATIONPROC)
-			GLUtils::getProcAddress("glBlendEquation");
 	}
 	else if (GLUtils::haveExtension("GL_EXT_blend_subtract") &&
 		 GLUtils::haveExtension("GL_EXT_blend_min_max")) {
 		haveBlendEquation = true;
-		glBlendEquation_func = (PFNGLBLENDEQUATIONPROC)
-			GLUtils::getProcAddress("glBlendEquationEXT");
 	}
 
 	if (GLUtils::getVersion() >= 2.0) {
 		haveBlendEquationSep = true;
-		glBlendEquationSeparate_func = (PFNGLBLENDEQUATIONSEPARATEPROC)
-			GLUtils::getProcAddress("glBlendEquationSeparate");
 	}
 	else if (GLUtils::haveExtension("GL_EXT_blend_equation_separate")) {
 		haveBlendEquationSep = true;
-		glBlendEquationSeparate_func = (PFNGLBLENDEQUATIONSEPARATEPROC)
-			GLUtils::getProcAddress("glBlendEquationSeparateEXT");
 	}
 
 	if (haveBlendColor) {
@@ -776,8 +749,8 @@ BlendFuncTest::runOne(BlendFuncResult& r, Window& w) {
 		p.constColor[1] = 0.0;
 		p.constColor[2] = 1.0;
 		p.constColor[3] = 0.75;
-		glBlendColor_func(p.constColor[0], p.constColor[1],
-				  p.constColor[2], p.constColor[3]);
+		glBlendColor(p.constColor[0], p.constColor[1],
+                             p.constColor[2], p.constColor[3]);
 	}
 
 	if (haveSepFunc) {
diff --git a/tests/glean/tbufferobject.cpp b/tests/glean/tbufferobject.cpp
index 3ed464b..1d4bd24 100644
--- a/tests/glean/tbufferobject.cpp
+++ b/tests/glean/tbufferobject.cpp
@@ -40,23 +40,6 @@
 
 namespace GLEAN {
 
-
-// GL_ARB_vertex/fragment_program
-static PFNGLGENBUFFERSARBPROC glGenBuffersARB_func = NULL;
-static PFNGLDELETEBUFFERSARBPROC glDeleteBuffersARB_func = NULL;
-static PFNGLBINDBUFFERARBPROC glBindBufferARB_func = NULL;
-static PFNGLBUFFERDATAARBPROC glBufferDataARB_func = NULL;
-static PFNGLMAPBUFFERARBPROC glMapBufferARB_func = NULL;
-static PFNGLUNMAPBUFFERARBPROC glUnmapBufferARB_func = NULL;
-
-// GL_ARB_copy_buffer
-static PFNGLCOPYBUFFERSUBDATAPROC glCopyBufferSubData_func = NULL;
-
-// GL_ARB_map_buffer_range
-static PFNGLMAPBUFFERRANGEPROC glMapBufferRange_func = NULL;
-static PFNGLFLUSHMAPPEDBUFFERRANGEPROC glFlushMappedBufferRange_func = NULL;
-
-
 BufferObjectResult::BufferObjectResult()
 {
    pass = false;
@@ -83,23 +66,6 @@ BufferObjectTest::setup(void)
       return false;
    }
 
-
-   glGenBuffersARB_func = (PFNGLGENBUFFERSARBPROC) GLUtils::getProcAddress("glGenBuffersARB");
-   glDeleteBuffersARB_func = (PFNGLDELETEBUFFERSARBPROC) GLUtils::getProcAddress("glDeleteBuffersARB");
-   glBindBufferARB_func = (PFNGLBINDBUFFERARBPROC) GLUtils::getProcAddress("glBindBufferARB");
-   glBufferDataARB_func = (PFNGLBUFFERDATAARBPROC) GLUtils::getProcAddress("glBufferDataARB");
-   glMapBufferARB_func = (PFNGLMAPBUFFERARBPROC) GLUtils::getProcAddress("glMapBufferARB");
-   glUnmapBufferARB_func = (PFNGLUNMAPBUFFERARBPROC) GLUtils::getProcAddress("glUnmapBufferARB");
-
-   if (have_ARB_copy_buffer) {
-      glCopyBufferSubData_func = (PFNGLCOPYBUFFERSUBDATAPROC) GLUtils::getProcAddress("glCopyBufferSubData");
-   }
-
-   if (have_ARB_map_buffer_range) {
-      glMapBufferRange_func = (PFNGLMAPBUFFERRANGEPROC) GLUtils::getProcAddress("glMapBufferRange");
-      glFlushMappedBufferRange_func = (PFNGLFLUSHMAPPEDBUFFERRANGEPROC) GLUtils::getProcAddress("glFlushMappedBufferRange");
-   }
-
    return true;
 }
 
@@ -115,25 +81,25 @@ BufferObjectTest::testCopyBuffer(void)
    GLint i;
    bool pass;
 
-   glGenBuffersARB_func(2, bufs);
+   glGenBuffersARB(2, bufs);
 
    // setup first buffer
-   glBindBufferARB_func(target1, bufs[0]);
-   glBufferDataARB_func(target1, size1, NULL, GL_STATIC_DRAW);
-   map = (GLubyte *) glMapBufferARB_func(target1, GL_WRITE_ONLY_ARB);
+   glBindBufferARB(target1, bufs[0]);
+   glBufferDataARB(target1, size1, NULL, GL_STATIC_DRAW);
+   map = (GLubyte *) glMapBufferARB(target1, GL_WRITE_ONLY_ARB);
    for (i = 0; i < size1; i++) {
       map[i] = buf1[i] = i & 0xff;
    }
-   glUnmapBufferARB_func(target1);
+   glUnmapBufferARB(target1);
 
    // setup second buffer
-   glBindBufferARB_func(target2, bufs[1]);
-   glBufferDataARB_func(target2, size2, NULL, GL_STATIC_DRAW);
-   map = (GLubyte *) glMapBufferARB_func(target2, GL_WRITE_ONLY_ARB);
+   glBindBufferARB(target2, bufs[1]);
+   glBufferDataARB(target2, size2, NULL, GL_STATIC_DRAW);
+   map = (GLubyte *) glMapBufferARB(target2, GL_WRITE_ONLY_ARB);
    for (i = 0; i < size2; i++) {
       map[i] = buf2[i] = 0;
    }
-   glUnmapBufferARB_func(target2);
+   glUnmapBufferARB(target2);
 
    // copy random sections of first buffer to second buffer
    for (i = 0; i < 50; i++) {
@@ -146,7 +112,7 @@ BufferObjectTest::testCopyBuffer(void)
       assert(dstOffset + size <= size2);
 
       // test copy from first buffer to second
-      glCopyBufferSubData_func(target1,   // src target
+      glCopyBufferSubData(target1,   // src target
                                target2,   // dst target
                                srcOffset, // src start
                                dstOffset, // dst start
@@ -163,7 +129,7 @@ BufferObjectTest::testCopyBuffer(void)
    }
 
    // check results in second buffer object
-   map = (GLubyte *) glMapBufferARB_func(target2, GL_READ_ONLY_ARB);
+   map = (GLubyte *) glMapBufferARB(target2, GL_READ_ONLY_ARB);
    pass = true;
    for (i = 0; i < size2; i++) {
       if (map[i] != buf2[i]) {
@@ -172,9 +138,9 @@ BufferObjectTest::testCopyBuffer(void)
          break;
       }
    }
-   glUnmapBufferARB_func(target2);
+   glUnmapBufferARB(target2);
 
-   glDeleteBuffersARB_func(2, bufs);
+   glDeleteBuffersARB(2, bufs);
 
    return pass;
 }
@@ -193,16 +159,16 @@ BufferObjectTest::testMapBufferRange(void)
    bool pass = true;
 
    // create buffer
-   glGenBuffersARB_func(1, &buffer);
-   glBindBufferARB_func(target1, buffer);
-   glBufferDataARB_func(target1, size, NULL, GL_STATIC_DRAW);
+   glGenBuffersARB(1, &buffer);
+   glBindBufferARB(target1, buffer);
+   glBufferDataARB(target1, size, NULL, GL_STATIC_DRAW);
 
    // initialize to zeros
-   map = (GLubyte *) glMapBufferRange_func(target1, 0, size, GL_MAP_WRITE_BIT);
+   map = (GLubyte *) glMapBufferRange(target1, 0, size, GL_MAP_WRITE_BIT);
    for (i = 0; i < size; i++) {
       map[i] = buf[i] = 0;
    }
-   glUnmapBufferARB_func(target1);
+   glUnmapBufferARB(target1);
 
    // write to random ranges
    for (i = 0; i < 50; i++) {
@@ -212,16 +178,16 @@ BufferObjectTest::testMapBufferRange(void)
       assert(mapOffset + mapSize <= size);
 
       map = (GLubyte *)
-         glMapBufferRange_func(target1, mapOffset, mapSize,
+         glMapBufferRange(target1, mapOffset, mapSize,
                                GL_MAP_WRITE_BIT | GL_MAP_FLUSH_EXPLICIT_BIT);
 
       for (j = 0; j < mapSize; j++) {
          map[j] = buf[mapOffset + j] = (mapOffset + j) & 0xff;
       }
 
-      glFlushMappedBufferRange_func(target1, 0, mapSize);
+      glFlushMappedBufferRange(target1, 0, mapSize);
 
-      glUnmapBufferARB_func(target1);
+      glUnmapBufferARB(target1);
    }
 
    if (glGetError())
@@ -234,7 +200,7 @@ BufferObjectTest::testMapBufferRange(void)
 
       assert(mapOffset + mapSize <= size);
 
-      map = (GLubyte *) glMapBufferRange_func(target1, mapOffset,
+      map = (GLubyte *) glMapBufferRange(target1, mapOffset,
                                               mapSize, GL_MAP_READ_BIT);
 
       for (j = 0; j < mapSize; j++) {
@@ -243,10 +209,10 @@ BufferObjectTest::testMapBufferRange(void)
             break;
          }
       }
-      glUnmapBufferARB_func(target1);
+      glUnmapBufferARB(target1);
    }
 
-   glDeleteBuffersARB_func(1, &buffer);
+   glDeleteBuffersARB(1, &buffer);
 
    if (glGetError())
       pass = false;
diff --git a/tests/glean/tdepthstencil.cpp b/tests/glean/tdepthstencil.cpp
index 8b60b4f..41f869b 100644
--- a/tests/glean/tdepthstencil.cpp
+++ b/tests/glean/tdepthstencil.cpp
@@ -40,9 +40,6 @@
 
 namespace GLEAN {
 
-static PFNGLWINDOWPOS2IARBPROC WindowPos2i = NULL;
-
-
 DepthStencilResult::DepthStencilResult()
 {
 	pass = false;
@@ -69,10 +66,6 @@ DepthStencilTest::setup(void)
 {
 	glGetIntegerv(GL_DEPTH_BITS, &depthBits);
 	glGetIntegerv(GL_STENCIL_BITS, &stencilBits);
-
-        WindowPos2i = (PFNGLWINDOWPOS2IARBPROC)
-		GLUtils::getProcAddress("glWindowPos2iARB");
-        assert(WindowPos2i);
 }
 
 
@@ -168,7 +161,7 @@ DepthStencilTest::testDrawAndRead(void)
 	};
 	GLuint readback[4];
 
-	WindowPos2i(0, 0);
+	glWindowPos2i(0, 0);
 	glDrawPixels(2, 2, GL_DEPTH_STENCIL_EXT,
 		     GL_UNSIGNED_INT_24_8_EXT, image);
 	if (checkError("glDrawPixels in testDrawAndRead"))
diff --git a/tests/glean/tfbo.cpp b/tests/glean/tfbo.cpp
index 0472802..d39eb6f 100644
--- a/tests/glean/tfbo.cpp
+++ b/tests/glean/tfbo.cpp
@@ -43,32 +43,6 @@
 namespace GLEAN
 {
 
-// GL_VERSION_1_2
-static PFNGLTEXIMAGE3DPROC glTexImage3D_func = NULL;
-static PFNGLCOPYTEXSUBIMAGE3DPROC glCopyTexSubImage3D_func = NULL;
-
-// GL_VERSION_1_3
-static PFNGLACTIVETEXTUREPROC glActiveTexture_func = NULL;
-static PFNGLMULTITEXCOORD2FPROC glMultiTexCoord2f_func = NULL;
-
-// GL_EXT_framebuffer_object
-static PFNGLISRENDERBUFFEREXTPROC glIsRenderbufferEXT_func = NULL;
-static PFNGLBINDRENDERBUFFEREXTPROC glBindRenderbufferEXT_func = NULL;
-static PFNGLDELETERENDERBUFFERSEXTPROC glDeleteRenderbuffersEXT_func = NULL;
-static PFNGLGENRENDERBUFFERSEXTPROC glGenRenderbuffersEXT_func = NULL;
-static PFNGLRENDERBUFFERSTORAGEEXTPROC glRenderbufferStorageEXT_func = NULL;
-static PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC glGetRenderbufferParameterivEXT_func = NULL;
-static PFNGLISFRAMEBUFFEREXTPROC glIsFramebufferEXT_func = NULL;
-static PFNGLBINDFRAMEBUFFEREXTPROC glBindFramebufferEXT_func = NULL;
-static PFNGLDELETEFRAMEBUFFERSEXTPROC glDeleteFramebuffersEXT_func = NULL;
-static PFNGLGENFRAMEBUFFERSEXTPROC glGenFramebuffersEXT_func = NULL;
-static PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC glCheckFramebufferStatusEXT_func = NULL;
-static PFNGLFRAMEBUFFERTEXTURE1DEXTPROC glFramebufferTexture1DEXT_func = NULL;
-static PFNGLFRAMEBUFFERTEXTURE2DEXTPROC glFramebufferTexture2DEXT_func = NULL;
-static PFNGLFRAMEBUFFERTEXTURE3DEXTPROC glFramebufferTexture3DEXT_func = NULL;
-static PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC glFramebufferRenderbufferEXT_func = NULL;
-static PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC glGetFramebufferAttachmentParameterivEXT_func = NULL;
-
 static int useFramebuffer;
 
 bool
@@ -124,49 +98,6 @@ FBOTest::setup(void)
 	else
 		printf("GL_ARB_framebuffer_object is not supported\n");
 
-        glTexImage3D_func = (PFNGLTEXIMAGE3DPROC) GLUtils::getProcAddress("glTexImage3D");
-        assert(glTexImage3D_func);
-        glCopyTexSubImage3D_func = (PFNGLCOPYTEXSUBIMAGE3DPROC) GLUtils::getProcAddress("glCopyTexSubImage3D");
-        assert(glCopyTexSubImage3D_func);
-
-        glActiveTexture_func = (PFNGLACTIVETEXTUREPROC) GLUtils::getProcAddress("glActiveTexture");
-        assert(glActiveTexture_func);
-        glMultiTexCoord2f_func = (PFNGLMULTITEXCOORD2FPROC) GLUtils::getProcAddress("glMultiTexCoord2f");
-        assert(glMultiTexCoord2f_func);
-
-        glIsRenderbufferEXT_func = (PFNGLISRENDERBUFFEREXTPROC) GLUtils::getProcAddress("glIsRenderbufferEXT");
-        assert(glIsRenderbufferEXT_func);
-        glBindRenderbufferEXT_func = (PFNGLBINDRENDERBUFFEREXTPROC) GLUtils::getProcAddress("glBindRenderbufferEXT");
-        assert(glBindRenderbufferEXT_func);
-        glDeleteRenderbuffersEXT_func = (PFNGLDELETERENDERBUFFERSEXTPROC) GLUtils::getProcAddress("glDeleteRenderbuffersEXT");
-        assert(glDeleteRenderbuffersEXT_func);
-        glGenRenderbuffersEXT_func = (PFNGLGENRENDERBUFFERSEXTPROC) GLUtils::getProcAddress("glGenRenderbuffersEXT");
-        assert(glGenRenderbuffersEXT_func);
-        glRenderbufferStorageEXT_func = (PFNGLRENDERBUFFERSTORAGEEXTPROC) GLUtils::getProcAddress("glRenderbufferStorageEXT");
-        assert(glRenderbufferStorageEXT_func);
-        glGetRenderbufferParameterivEXT_func = (PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC) GLUtils::getProcAddress("glGetRenderbufferParameterivEXT");
-        assert(glGetRenderbufferParameterivEXT_func);
-        glIsFramebufferEXT_func = (PFNGLISFRAMEBUFFEREXTPROC) GLUtils::getProcAddress("glIsFramebufferEXT");
-        assert(glIsFramebufferEXT_func);
-        glBindFramebufferEXT_func = (PFNGLBINDFRAMEBUFFEREXTPROC) GLUtils::getProcAddress("glBindFramebufferEXT");
-        assert(glBindFramebufferEXT_func);
-        glDeleteFramebuffersEXT_func = (PFNGLDELETEFRAMEBUFFERSEXTPROC) GLUtils::getProcAddress("glDeleteFramebuffersEXT");
-        assert(glDeleteFramebuffersEXT_func);
-        glGenFramebuffersEXT_func = (PFNGLGENFRAMEBUFFERSEXTPROC) GLUtils::getProcAddress("glGenFramebuffersEXT");
-        assert(glGenFramebuffersEXT_func);
-        glCheckFramebufferStatusEXT_func = (PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC) GLUtils::getProcAddress("glCheckFramebufferStatusEXT");
-        assert(glCheckFramebufferStatusEXT_func);
-        glFramebufferTexture1DEXT_func = (PFNGLFRAMEBUFFERTEXTURE1DEXTPROC) GLUtils::getProcAddress("glFramebufferTexture1DEXT");
-        assert(glFramebufferTexture1DEXT_func);
-        glFramebufferTexture2DEXT_func = (PFNGLFRAMEBUFFERTEXTURE2DEXTPROC) GLUtils::getProcAddress("glFramebufferTexture2DEXT");
-        assert(glFramebufferTexture2DEXT_func);
-        glFramebufferTexture3DEXT_func = (PFNGLFRAMEBUFFERTEXTURE3DEXTPROC) GLUtils::getProcAddress("glFramebufferTexture3DEXT");
-        assert(glFramebufferTexture3DEXT_func);
-        glFramebufferRenderbufferEXT_func = (PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC) GLUtils::getProcAddress("glFramebufferRenderbufferEXT");
-        assert(glFramebufferRenderbufferEXT_func);
-        glGetFramebufferAttachmentParameterivEXT_func = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) GLUtils::getProcAddress("glGetFramebufferAttachmentParameterivEXT");
-        assert(glGetFramebufferAttachmentParameterivEXT_func);
-
         return true;
 }
 
@@ -252,7 +183,7 @@ static GLenum
 CheckFramebufferStatus(const char *func, int line)
 {
 	GLenum status;
-	status = glCheckFramebufferStatusEXT_func(GL_FRAMEBUFFER_EXT);
+	status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT);
 
 	switch(status) {
 	case GL_FRAMEBUFFER_COMPLETE_EXT:
@@ -329,23 +260,23 @@ FBOTest::testSanity(void)
                 return false;
         }
 
-        glGenFramebuffersEXT_func(1, fbs);
+        glGenFramebuffersEXT(1, fbs);
 
 
-        glBindFramebufferEXT_func(GL_FRAMEBUFFER_EXT, fbs[0]);
+        glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbs[0]);
         glGetIntegerv(GL_FRAMEBUFFER_BINDING_EXT, (GLint *) & fb_binding);
         if (fb_binding != fbs[0]) {
                 printf("  fb_binding = %d\n", fb_binding);
                 REPORT_FAILURE("Binding framebuffer failed");
                 return false;
         }
-	if (glIsFramebufferEXT_func(fbs[0]) != GL_TRUE)
+	if (glIsFramebufferEXT(fbs[0]) != GL_TRUE)
 	{
                 REPORT_FAILURE("Call glIsFramebufferEXT failed");
                 return false;
 	}
 
-        glDeleteFramebuffersEXT_func(1, fbs);
+        glDeleteFramebuffersEXT(1, fbs);
 
         GLint maxRenderbufferSize;
 
@@ -364,7 +295,7 @@ FBOTest::testSanity(void)
 void
 FBOTest::reset(void)
 {                                        
-	glBindFramebufferEXT_func(GL_FRAMEBUFFER_EXT, 0);
+	glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
 	glDisable(GL_DEPTH_TEST);
 	glDisable(GL_STENCIL_TEST);
 }
@@ -400,7 +331,7 @@ FBOTest::testRender2SingleTexture(void)
 					continue;
 
                                 if (useFramebuffer)
-                                        glGenFramebuffersEXT_func(1, fbs);
+                                        glGenFramebuffersEXT(1, fbs);
                                 glGenTextures(1, textures);
 
                                 glBindTexture(textureModes[mode],
@@ -427,7 +358,7 @@ FBOTest::testRender2SingleTexture(void)
                                                      GL_RGB, GL_INT, NULL);
                                         break;
                                 case GL_TEXTURE_3D:
-                                        glTexImage3D_func(GL_TEXTURE_3D,
+                                        glTexImage3D(GL_TEXTURE_3D,
                                                      0, GL_RGB,
                                                      TEXSIZE,
                                                      TEXSIZE,
@@ -470,7 +401,7 @@ FBOTest::testRender2SingleTexture(void)
 
 
                                 if (useFramebuffer) {
-                                        glBindFramebufferEXT_func(GL_FRAMEBUFFER_EXT, fbs[0]);
+                                        glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbs[0]);
                                         int height = TEXSIZE;
 
                                         if (textureModes[mode] == GL_TEXTURE_1D)
@@ -479,28 +410,28 @@ FBOTest::testRender2SingleTexture(void)
                                         if (depthBuffer) {
                                                 int params;
 
-                                                glGenRenderbuffersEXT_func(1, depth_rb);
+                                                glGenRenderbuffersEXT(1, depth_rb);
 
 					
-                                                glBindRenderbufferEXT_func
+                                                glBindRenderbufferEXT
                                                         (GL_RENDERBUFFER_EXT,
                                                          depth_rb[0]);
-						if (glIsRenderbufferEXT_func(depth_rb[0]) != GL_TRUE)
+						if (glIsRenderbufferEXT(depth_rb[0]) != GL_TRUE)
 						{
                 					REPORT_FAILURE("Call glIsRenderbufferEXT failed\n");
                 					return false;
 						}
 
-                                                glRenderbufferStorageEXT_func
+                                                glRenderbufferStorageEXT
                                                         (GL_RENDERBUFFER_EXT,
                                                          GL_DEPTH_COMPONENT,
                                                          TEXSIZE, height);
-                                                glFramebufferRenderbufferEXT_func
+                                                glFramebufferRenderbufferEXT
                                                         (GL_FRAMEBUFFER_EXT,
                                                          GL_DEPTH_ATTACHMENT_EXT,
                                                          GL_RENDERBUFFER_EXT,
                                                          depth_rb[0]);
-                                                glGetRenderbufferParameterivEXT_func
+                                                glGetRenderbufferParameterivEXT
                                                         (GL_RENDERBUFFER_EXT,
                                                          GL_RENDERBUFFER_WIDTH_EXT,
                                                          &params);
@@ -510,7 +441,7 @@ FBOTest::testRender2SingleTexture(void)
                                                         printf("width = %d\n", params);
                                                         return false;
                                                 }
-                                                glGetRenderbufferParameterivEXT_func
+                                                glGetRenderbufferParameterivEXT
                                                         (GL_RENDERBUFFER_EXT,
                                                          GL_RENDERBUFFER_HEIGHT_EXT,
                                                          &params);
@@ -525,18 +456,18 @@ FBOTest::testRender2SingleTexture(void)
                                                 int type;
 
                                                 type = -1;
-                                                glGenRenderbuffersEXT_func(1, stencil_rb);
-                                                glBindRenderbufferEXT_func(GL_RENDERBUFFER_EXT, stencil_rb[0]);
-                                                glRenderbufferStorageEXT_func
+                                                glGenRenderbuffersEXT(1, stencil_rb);
+                                                glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, stencil_rb[0]);
+                                                glRenderbufferStorageEXT
                                                         (GL_RENDERBUFFER_EXT,
                                                          GL_STENCIL_INDEX,
                                                          TEXSIZE, height);
-                                                glFramebufferRenderbufferEXT_func
+                                                glFramebufferRenderbufferEXT
                                                         (GL_FRAMEBUFFER_EXT,
                                                          GL_STENCIL_ATTACHMENT_EXT,
                                                          GL_RENDERBUFFER_EXT,
                                                          stencil_rb[0]);
-                                                glGetFramebufferAttachmentParameterivEXT_func
+                                                glGetFramebufferAttachmentParameterivEXT
                                                         (GL_FRAMEBUFFER_EXT,
                                                          GL_STENCIL_ATTACHMENT_EXT,
                                                          GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT,
@@ -554,12 +485,12 @@ FBOTest::testRender2SingleTexture(void)
                                                 int name;
 
                                                 name = -1;
-                                                glFramebufferTexture1DEXT_func
+                                                glFramebufferTexture1DEXT
                                                         (GL_FRAMEBUFFER_EXT,
                                                          GL_COLOR_ATTACHMENT0_EXT,
                                                          GL_TEXTURE_1D,
                                                          textures[0], 0);
-                                                glGetFramebufferAttachmentParameterivEXT_func
+                                                glGetFramebufferAttachmentParameterivEXT
                                                         (GL_FRAMEBUFFER_EXT,
                                                          GL_COLOR_ATTACHMENT0_EXT,
                                                          GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT,
@@ -576,12 +507,12 @@ FBOTest::testRender2SingleTexture(void)
                                                 int level;
 
                                                 level = -1;
-                                                glFramebufferTexture2DEXT_func
+                                                glFramebufferTexture2DEXT
                                                         (GL_FRAMEBUFFER_EXT,
                                                          GL_COLOR_ATTACHMENT0_EXT,
                                                          GL_TEXTURE_2D,
                                                          textures[0], 0);
-                                                glGetFramebufferAttachmentParameterivEXT_func
+                                                glGetFramebufferAttachmentParameterivEXT
                                                         (GL_FRAMEBUFFER_EXT,
                                                          GL_COLOR_ATTACHMENT0_EXT,
                                                          GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT,
@@ -598,7 +529,7 @@ FBOTest::testRender2SingleTexture(void)
                                                 int zoffset;
 
                                                 zoffset = -1;
-                                                glFramebufferTexture3DEXT_func
+                                                glFramebufferTexture3DEXT
                                                         (GL_FRAMEBUFFER_EXT,
                                                          GL_COLOR_ATTACHMENT0_EXT,
                                                          GL_TEXTURE_3D,
@@ -606,7 +537,7 @@ FBOTest::testRender2SingleTexture(void)
 							 0,
                                                          maxzoffset-1);
 
-                                                glGetFramebufferAttachmentParameterivEXT_func
+                                                glGetFramebufferAttachmentParameterivEXT
                                                         (GL_FRAMEBUFFER_EXT,
                                                          GL_COLOR_ATTACHMENT0_EXT,
                                                          GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT,
@@ -622,12 +553,12 @@ FBOTest::testRender2SingleTexture(void)
                                         case GL_TEXTURE_CUBE_MAP:
                                                 int face = 0;
 
-                                                glFramebufferTexture2DEXT_func
+                                                glFramebufferTexture2DEXT
                                                         (GL_FRAMEBUFFER_EXT,
                                                          GL_COLOR_ATTACHMENT0_EXT,
                                                          GL_TEXTURE_CUBE_MAP_POSITIVE_Z,
                                                          textures[0], 0);
-                                                glGetFramebufferAttachmentParameterivEXT_func
+                                                glGetFramebufferAttachmentParameterivEXT
                                                         (GL_FRAMEBUFFER_EXT,
                                                          GL_COLOR_ATTACHMENT0_EXT,
                                                          GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT,
@@ -654,11 +585,11 @@ FBOTest::testRender2SingleTexture(void)
 				if (status != GL_FRAMEBUFFER_COMPLETE_EXT) {
 					glDeleteTextures(1, textures);
 					if (useFramebuffer)
-						glDeleteFramebuffersEXT_func(1, fbs);
+						glDeleteFramebuffersEXT(1, fbs);
 					if (depthBuffer)
-						glDeleteRenderbuffersEXT_func(1, depth_rb);
+						glDeleteRenderbuffersEXT(1, depth_rb);
 					if (stencilBuffer)
-						glDeleteRenderbuffersEXT_func(1, stencil_rb);
+						glDeleteRenderbuffersEXT(1, stencil_rb);
 					continue;
 				}
 
@@ -756,7 +687,7 @@ FBOTest::testRender2SingleTexture(void)
                                 glBindTexture(textureModes[mode],
                                               textures[0]);
                                 if (useFramebuffer) {
-                                        glBindFramebufferEXT_func
+                                        glBindFramebufferEXT
                                                 (GL_FRAMEBUFFER_EXT, 0);
                                         glBindTexture(textureModes
                                                       [mode], textures[0]);
@@ -778,7 +709,7 @@ FBOTest::testRender2SingleTexture(void)
                                                          TEXSIZE, 0);
                                                 break;
                                         case GL_TEXTURE_3D:
-                                                glCopyTexSubImage3D_func
+                                                glCopyTexSubImage3D
                                                         (GL_TEXTURE_3D,
                                                          0, 0, 0,
                                                          0, 0, 0,
@@ -838,11 +769,11 @@ FBOTest::testRender2SingleTexture(void)
 
                                 glDeleteTextures(1, textures);
                                 if (useFramebuffer)
-                                        glDeleteFramebuffersEXT_func(1, fbs);
+                                        glDeleteFramebuffersEXT(1, fbs);
                                 if (depthBuffer)
-                                        glDeleteRenderbuffersEXT_func(1, depth_rb);
+                                        glDeleteRenderbuffersEXT(1, depth_rb);
                                 if (stencilBuffer)
-                                        glDeleteRenderbuffersEXT_func(1, stencil_rb);
+                                        glDeleteRenderbuffersEXT(1, stencil_rb);
 
 //					getchar();
                                 if (checkResult(colors[RED], depthBuffer, stencilBuffer) == false) {
@@ -892,7 +823,7 @@ FBOTest::testRender2MultiTexture(void)
                         numFBO = 1;
 
                 if (useFramebuffer)
-                        glGenFramebuffersEXT_func(numFBO, fbs);
+                        glGenFramebuffersEXT(numFBO, fbs);
 
                 GLint maxTexUnits;
 
@@ -908,7 +839,7 @@ FBOTest::testRender2MultiTexture(void)
                         else
                                 idx = i;
 
-                        glActiveTexture_func(GL_TEXTURE0 + idx);
+                        glActiveTexture(GL_TEXTURE0 + idx);
                         glBindTexture(GL_TEXTURE_2D, textures[idx]);
                         glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB,
                                      TEXSIZE, TEXSIZE, 0, GL_RGB,
@@ -916,18 +847,18 @@ FBOTest::testRender2MultiTexture(void)
 
                         if (useFramebuffer) {
                                 if (mode == MULTI_FBO)
-                                        glBindFramebufferEXT_func(GL_FRAMEBUFFER_EXT, fbs[i]);
+                                        glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbs[i]);
                                 else
-                                        glBindFramebufferEXT_func(GL_FRAMEBUFFER_EXT, fbs[0]);
+                                        glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbs[0]);
 
                                 if (mode != SINGLE_COLOR_ATTACH)
-                                        glFramebufferTexture2DEXT_func
+                                        glFramebufferTexture2DEXT
                                                 (GL_FRAMEBUFFER_EXT,
                                                  GL_COLOR_ATTACHMENT0_EXT + i,
                                                  GL_TEXTURE_2D,
                                                  textures[idx], 0);
                                 else
-                                        glFramebufferTexture2DEXT_func
+                                        glFramebufferTexture2DEXT
                                                 (GL_FRAMEBUFFER_EXT,
                                                  GL_COLOR_ATTACHMENT0_EXT,
                                                  GL_TEXTURE_2D,
@@ -957,9 +888,9 @@ FBOTest::testRender2MultiTexture(void)
 
                         if (useFramebuffer) {
                                 if (mode == MULTI_FBO)
-                                        glBindFramebufferEXT_func(GL_FRAMEBUFFER_EXT, fbs[i]);
+                                        glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbs[i]);
                                 else
-                                        glBindFramebufferEXT_func(GL_FRAMEBUFFER_EXT, fbs[0]);
+                                        glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbs[0]);
 
                                 if (mode == MULTI_COLOR_ATTACH) {
                                         glDrawBuffer(GL_COLOR_ATTACHMENT0_EXT + idx);
@@ -968,7 +899,7 @@ FBOTest::testRender2MultiTexture(void)
 
                                 CheckFramebufferStatus("FBOTest::testRender2MultiTexture", __LINE__);
                                 if (mode == SINGLE_COLOR_ATTACH) {
-                                        glFramebufferTexture2DEXT_func
+                                        glFramebufferTexture2DEXT
                                                 (GL_FRAMEBUFFER_EXT,
                                                  GL_COLOR_ATTACHMENT0_EXT,
                                                  GL_TEXTURE_2D,
@@ -994,7 +925,7 @@ FBOTest::testRender2MultiTexture(void)
 
                         glEnable(GL_TEXTURE_2D);
                         if (useFramebuffer) {
-                                glBindFramebufferEXT_func(GL_FRAMEBUFFER_EXT, 0);
+                                glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
                                 glBindTexture(GL_TEXTURE_2D, textures[idx]);
                         }
                         else {
@@ -1007,7 +938,7 @@ FBOTest::testRender2MultiTexture(void)
                 }
                 // Clean up
                 if (useFramebuffer)
-                        glDeleteFramebuffersEXT_func(numFBO, fbs);
+                        glDeleteFramebuffersEXT(numFBO, fbs);
 
 
                 // Render to the window
@@ -1019,7 +950,7 @@ FBOTest::testRender2MultiTexture(void)
                         else
                                 idx = i;
 
-                        glActiveTexture_func(GL_TEXTURE0 + idx);
+                        glActiveTexture(GL_TEXTURE0 + idx);
                         glEnable(GL_TEXTURE_2D);
                         glTexParameteri(GL_TEXTURE_2D,
                                         GL_TEXTURE_MIN_FILTER, GL_NEAREST);
@@ -1032,13 +963,13 @@ FBOTest::testRender2MultiTexture(void)
                         glClearColor(0.0, 0.0, 0.0, 0.0);
                         glClear(GL_COLOR_BUFFER_BIT);
                         glBegin(GL_POLYGON);
-                        glMultiTexCoord2f_func(GL_TEXTURE0 + idx, 0, 0);
+                        glMultiTexCoord2f(GL_TEXTURE0 + idx, 0, 0);
                         glVertex3f(0, 0, 1);
-                        glMultiTexCoord2f_func(GL_TEXTURE0 + idx, 1, 0);
+                        glMultiTexCoord2f(GL_TEXTURE0 + idx, 1, 0);
                         glVertex3f(TEXSIZE, 0, 1);
-                        glMultiTexCoord2f_func(GL_TEXTURE0 + idx, 1, 1);
+                        glMultiTexCoord2f(GL_TEXTURE0 + idx, 1, 1);
                         glVertex3f(TEXSIZE, TEXSIZE, 1);
-                        glMultiTexCoord2f_func(GL_TEXTURE0 + idx, 0, 1);
+                        glMultiTexCoord2f(GL_TEXTURE0 + idx, 0, 1);
                         glVertex3f(0, TEXSIZE, 1);
                         glEnd();
 
@@ -1053,7 +984,7 @@ FBOTest::testRender2MultiTexture(void)
                         }
 
                         glDisable(GL_TEXTURE_2D);
-                        glActiveTexture_func(GL_TEXTURE0);
+                        glActiveTexture(GL_TEXTURE0);
                 }
 
                 glDeleteTextures(maxTexUnits, textures);
@@ -1071,7 +1002,7 @@ FBOTest::testRender2depthTexture(void)
 
 	reset();
         if (useFramebuffer)
-                glGenFramebuffersEXT_func(1, fbs);
+                glGenFramebuffersEXT(1, fbs);
 
         glGenTextures(1, textures);
         glBindTexture(GL_TEXTURE_2D, textures[0]);
@@ -1079,8 +1010,8 @@ FBOTest::testRender2depthTexture(void)
                      TEXSIZE, 0, GL_DEPTH_COMPONENT, GL_INT, NULL);
 
         if (useFramebuffer) {
-                glBindFramebufferEXT_func(GL_FRAMEBUFFER_EXT, fbs[0]);
-                glFramebufferTexture2DEXT_func(GL_FRAMEBUFFER_EXT,
+                glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbs[0]);
+                glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT,
                                           GL_DEPTH_ATTACHMENT_EXT,
                                           GL_TEXTURE_2D, textures[0], 0);
                 glDrawBuffer(GL_NONE);
@@ -1105,7 +1036,7 @@ FBOTest::testRender2depthTexture(void)
         glEnd();
 
         if (useFramebuffer) {
-                glBindFramebufferEXT_func(GL_FRAMEBUFFER_EXT, 0);
+                glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
                 glBindTexture(GL_TEXTURE_2D, textures[0]);
         }
         else {
@@ -1146,7 +1077,7 @@ FBOTest::testRender2depthTexture(void)
 
         // Clean up
         if (useFramebuffer)
-                glDeleteFramebuffersEXT_func(1, fbs);
+                glDeleteFramebuffersEXT(1, fbs);
         glDeleteTextures(1, textures);
 
         // Check result
@@ -1170,13 +1101,13 @@ FBOTest::testRender2MipmapTexture(void)
 
 	reset();
         if (useFramebuffer)
-                glGenFramebuffersEXT_func(1, fbs);
+                glGenFramebuffersEXT(1, fbs);
 
         glGenTextures(1, textures);
         glBindTexture(GL_TEXTURE_2D, textures[0]);
 
         if (useFramebuffer)
-                glBindFramebufferEXT_func(GL_FRAMEBUFFER_EXT, fbs[0]);
+                glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbs[0]);
 
         glDisable(GL_TEXTURE_2D);
 
@@ -1186,7 +1117,7 @@ FBOTest::testRender2MipmapTexture(void)
                 if (useFramebuffer) {
                         glTexImage2D(GL_TEXTURE_2D, level, GL_RGB,
                                      i, i, 0, GL_RGB, GL_INT, NULL);
-                        glFramebufferTexture2DEXT_func
+                        glFramebufferTexture2DEXT
                                 (GL_FRAMEBUFFER_EXT,
                                  GL_COLOR_ATTACHMENT0_EXT,
                                  GL_TEXTURE_2D, textures[0], level);
@@ -1224,7 +1155,7 @@ FBOTest::testRender2MipmapTexture(void)
         }
 
         if (useFramebuffer) {
-                glBindFramebufferEXT_func(GL_FRAMEBUFFER_EXT, 0);
+                glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
                 glBindTexture(GL_TEXTURE_2D, textures[0]);
         }
         glEnable(GL_TEXTURE_2D);
@@ -1258,7 +1189,7 @@ FBOTest::testRender2MipmapTexture(void)
 
         // Clean up
         if (useFramebuffer)
-                glDeleteFramebuffersEXT_func(1, fbs);
+                glDeleteFramebuffersEXT(1, fbs);
         glDeleteTextures(1, textures);
 
         // Check result
@@ -1301,13 +1232,13 @@ FBOTest::testErrorHandling(void)
 
 
                 // At least one image attached to the framebuffer
-                glGenFramebuffersEXT_func(1, fbs);
-                glBindFramebufferEXT_func(GL_FRAMEBUFFER_EXT, fbs[0]);
+                glGenFramebuffersEXT(1, fbs);
+                glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbs[0]);
                 glDrawBuffer(GL_NONE);
                 glReadBuffer(GL_NONE);
-                status = glCheckFramebufferStatusEXT_func(GL_FRAMEBUFFER_EXT);
-                glBindFramebufferEXT_func(GL_FRAMEBUFFER_EXT, 0);
-                glDeleteFramebuffersEXT_func(1, fbs);
+                status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT);
+                glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
+                glDeleteFramebuffersEXT(1, fbs);
                 if (status !=
                     GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT) {
                         REPORT_FAILURE
@@ -1317,25 +1248,25 @@ FBOTest::testErrorHandling(void)
 
                 // All attached images have the same width and height,
 		// unless GL_ARB_framebuffer object is supported.
-                glGenFramebuffersEXT_func(1, fbs);
-                glBindFramebufferEXT_func(GL_FRAMEBUFFER_EXT, fbs[0]);
+                glGenFramebuffersEXT(1, fbs);
+                glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbs[0]);
                 glGenTextures(2, textures);
                 glBindTexture(GL_TEXTURE_2D, textures[0]);
                 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, TEXSIZE,
                              TEXSIZE, 0, GL_RGB, GL_INT, NULL);
-                glFramebufferTexture2DEXT_func(GL_FRAMEBUFFER_EXT,
+                glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT,
                                           GL_COLOR_ATTACHMENT0_EXT,
                                           GL_TEXTURE_2D, textures[0], 0);
                 glBindTexture(GL_TEXTURE_2D, textures[1]);
                 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, TEXSIZE / 2,
                              TEXSIZE / 2, 0, GL_RGB, GL_INT, NULL);
-                glFramebufferTexture2DEXT_func(GL_FRAMEBUFFER_EXT,
+                glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT,
                                           GL_COLOR_ATTACHMENT0_EXT
                                           + maxColorAttachment - 1,
                                           GL_TEXTURE_2D, textures[1], 0);
-                status = glCheckFramebufferStatusEXT_func(GL_FRAMEBUFFER_EXT);
-                glBindFramebufferEXT_func(GL_FRAMEBUFFER_EXT, 0);
-                glDeleteFramebuffersEXT_func(1, fbs);
+                status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT);
+                glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
+                glDeleteFramebuffersEXT(1, fbs);
                 glDeleteTextures(2, textures);
                 if (!haveARBfbo &&
 		    status != GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT) {
@@ -1347,25 +1278,25 @@ FBOTest::testErrorHandling(void)
                 // All images attached to the attachment points
                 // COLOR_ATTACHMENT0_EXT through COLOR_ATTACHMENTn_EXT must
                 // have the same internal format, unless ARB_fbo is supported.
-                glGenFramebuffersEXT_func(1, fbs);
-                glBindFramebufferEXT_func(GL_FRAMEBUFFER_EXT, fbs[0]);
+                glGenFramebuffersEXT(1, fbs);
+                glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbs[0]);
                 glGenTextures(2, textures);
                 glBindTexture(GL_TEXTURE_2D, textures[0]);
                 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, TEXSIZE,
                              TEXSIZE, 0, GL_RGB, GL_INT, NULL);
-                glFramebufferTexture2DEXT_func(GL_FRAMEBUFFER_EXT,
+                glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT,
                                           GL_COLOR_ATTACHMENT0_EXT,
                                           GL_TEXTURE_2D, textures[0], 0);
                 glBindTexture(GL_TEXTURE_2D, textures[1]);
                 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, TEXSIZE,
                              TEXSIZE, 0, GL_RGBA, GL_INT, NULL);
-                glFramebufferTexture2DEXT_func(GL_FRAMEBUFFER_EXT,
+                glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT,
                                           GL_COLOR_ATTACHMENT0_EXT
                                           + maxColorAttachment - 1,
                                           GL_TEXTURE_2D, textures[1], 0);
-                status = glCheckFramebufferStatusEXT_func(GL_FRAMEBUFFER_EXT);
-                glBindFramebufferEXT_func(GL_FRAMEBUFFER_EXT, 0);
-                glDeleteFramebuffersEXT_func(1, fbs);
+                status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT);
+                glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
+                glDeleteFramebuffersEXT(1, fbs);
                 glDeleteTextures(2, textures);
                 if (!haveARBfbo &&
 		    status != GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT) {
@@ -1378,13 +1309,13 @@ FBOTest::testErrorHandling(void)
                 // The value of FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT must not
                 // be NONE for any color attachment point(s) named by
 		// DRAW_BUFFERi.
-                glGenFramebuffersEXT_func(1, fbs);
-                glBindFramebufferEXT_func(GL_FRAMEBUFFER_EXT, fbs[0]);
+                glGenFramebuffersEXT(1, fbs);
+                glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbs[0]);
                 glDrawBuffer(GL_COLOR_ATTACHMENT0_EXT +
                              maxColorAttachment - 1);
-                status = glCheckFramebufferStatusEXT_func(GL_FRAMEBUFFER_EXT);
-                glBindFramebufferEXT_func(GL_FRAMEBUFFER_EXT, 0);
-                glDeleteFramebuffersEXT_func(1, fbs);
+                status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT);
+                glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
+                glDeleteFramebuffersEXT(1, fbs);
                 if (status != GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT &&
 		    !have_ARB_ES2) {
                         REPORT_FAILURE
@@ -1395,14 +1326,14 @@ FBOTest::testErrorHandling(void)
                 // If READ_BUFFER is not NONE, then the value of
                 // FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT must not be NONE for
                 // the color attachment point named by READ_BUFFER.
-                glGenFramebuffersEXT_func(1, fbs);
-                glBindFramebufferEXT_func(GL_FRAMEBUFFER_EXT, fbs[0]);
+                glGenFramebuffersEXT(1, fbs);
+                glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbs[0]);
                 glDrawBuffer(GL_NONE);
                 glReadBuffer(GL_COLOR_ATTACHMENT0_EXT +
                              maxColorAttachment - 1);
-                status = glCheckFramebufferStatusEXT_func(GL_FRAMEBUFFER_EXT);
-                glBindFramebufferEXT_func(GL_FRAMEBUFFER_EXT, 0);
-                glDeleteFramebuffersEXT_func(1, fbs);
+                status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT);
+                glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
+                glDeleteFramebuffersEXT(1, fbs);
                 if (status != GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT &&
 		    !have_ARB_ES2) {
                         REPORT_FAILURE
diff --git a/tests/glean/tfragprog1.cpp b/tests/glean/tfragprog1.cpp
index dc152a5..837382c 100644
--- a/tests/glean/tfragprog1.cpp
+++ b/tests/glean/tfragprog1.cpp
@@ -48,17 +48,6 @@
 
 namespace GLEAN {
 
-
-static PFNGLPROGRAMLOCALPARAMETER4FVARBPROC glProgramLocalParameter4fvARB_func;
-static PFNGLGENPROGRAMSARBPROC glGenProgramsARB_func;
-static PFNGLPROGRAMSTRINGARBPROC glProgramStringARB_func;
-static PFNGLBINDPROGRAMARBPROC glBindProgramARB_func;
-static PFNGLISPROGRAMARBPROC glIsProgramARB_func;
-static PFNGLDELETEPROGRAMSARBPROC glDeleteProgramsARB_func;
-static PFNGLGETPROGRAMIVARBPROC glGetProgramivARB_func;
-static PFNGLFOGCOORDFPROC glFogCoordf_func;
-
-
 // Clamp X to [0, 1]
 #define CLAMP01( X )  ( (X)<(0.0) ? (0.0) : ((X)>(1.0) ? (1.0) : (X)) )
 // Absolute value
@@ -911,41 +900,18 @@ FragmentProgramTest::setup(void)
 	InfNan[3] = 1.0 / HUGE_VAL;
 
 	// get function pointers
-	glProgramLocalParameter4fvARB_func = (PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) GLUtils::getProcAddress("glProgramLocalParameter4fvARB");
-	assert(glProgramLocalParameter4fvARB_func);
-
-	glGenProgramsARB_func = (PFNGLGENPROGRAMSARBPROC) GLUtils::getProcAddress("glGenProgramsARB");
-	assert(glGenProgramsARB_func);
-
-	glProgramStringARB_func = (PFNGLPROGRAMSTRINGARBPROC) GLUtils::getProcAddress("glProgramStringARB");
-	assert(glProgramStringARB_func);
-
-	glBindProgramARB_func = (PFNGLBINDPROGRAMARBPROC) GLUtils::getProcAddress("glBindProgramARB");
-	assert(glBindProgramARB_func);
-
-	glIsProgramARB_func = (PFNGLISPROGRAMARBPROC) GLUtils::getProcAddress("glIsProgramARB");
-	assert(glIsProgramARB_func);
-
-	glDeleteProgramsARB_func = (PFNGLDELETEPROGRAMSARBPROC) GLUtils::getProcAddress("glDeleteProgramsARB");
-	assert(glDeleteProgramsARB_func);
-
-	glGetProgramivARB_func = (PFNGLGETPROGRAMIVARBPROC) GLUtils::getProcAddress("glGetProgramivARB");
-	assert(glGetProgramivARB_func);
-
-	glFogCoordf_func = (PFNGLFOGCOORDFPROC) GLUtils::getProcAddress("glFogCoordf");
-	assert(glFogCoordf_func);
 
 	GLuint progID;
-	glGenProgramsARB_func(1, &progID);
-	glBindProgramARB_func(GL_FRAGMENT_PROGRAM_ARB, progID);
+	glGenProgramsARB(1, &progID);
+	glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, progID);
 	glEnable(GL_FRAGMENT_PROGRAM_ARB);
 
 	// load program inputs
 	glColor4fv(FragColor);
-	glProgramLocalParameter4fvARB_func(GL_FRAGMENT_PROGRAM_ARB, 0, Param0);
-	glProgramLocalParameter4fvARB_func(GL_FRAGMENT_PROGRAM_ARB, 1, Param1);
-	glProgramLocalParameter4fvARB_func(GL_FRAGMENT_PROGRAM_ARB, 2, Param2);
-	glProgramLocalParameter4fvARB_func(GL_FRAGMENT_PROGRAM_ARB, 9, InfNan);
+	glProgramLocalParameter4fvARB(GL_FRAGMENT_PROGRAM_ARB, 0, Param0);
+	glProgramLocalParameter4fvARB(GL_FRAGMENT_PROGRAM_ARB, 1, Param1);
+	glProgramLocalParameter4fvARB(GL_FRAGMENT_PROGRAM_ARB, 2, Param2);
+	glProgramLocalParameter4fvARB(GL_FRAGMENT_PROGRAM_ARB, 9, InfNan);
 
 	GLenum err = glGetError();
 	assert(!err);  // should be OK
@@ -969,7 +935,7 @@ FragmentProgramTest::setup(void)
 	glFogf(GL_FOG_DENSITY, FogDensity);
 	glFogfv(GL_FOG_COLOR, FogColor);
 	glFogi(GL_FOG_COORDINATE_SOURCE_EXT, GL_FOG_COORDINATE_EXT);
-	glFogCoordf_func(FogCoord);
+	glFogCoordf(FogCoord);
 
 	// compute error tolerances (may need fine-tuning)
 	int bufferBits[5];
@@ -1053,10 +1019,10 @@ FragmentProgramTest::equalDepth(GLfloat z0, GLfloat z1) const
 bool
 FragmentProgramTest::testProgram(const FragmentProgram &p)
 {
-	glProgramStringARB_func(GL_FRAGMENT_PROGRAM_ARB,
-				GL_PROGRAM_FORMAT_ASCII_ARB,
-				strlen(p.progString),
-				(const GLubyte *) p.progString);
+	glProgramStringARB(GL_FRAGMENT_PROGRAM_ARB,
+                           GL_PROGRAM_FORMAT_ASCII_ARB,
+                           strlen(p.progString),
+                           (const GLubyte *) p.progString);
 
 	GLenum err = glGetError();
 	if (err) {
diff --git a/tests/glean/tglsl1.cpp b/tests/glean/tglsl1.cpp
index 6ccfb8e..4cb2ad0 100644
--- a/tests/glean/tglsl1.cpp
+++ b/tests/glean/tglsl1.cpp
@@ -41,52 +41,6 @@
 
 namespace GLEAN {
 
-static PFNGLTEXIMAGE3DPROC glTexImage3D_func = NULL;
-
-static PFNGLACTIVETEXTUREPROC glActiveTexture_func = NULL;
-
-static PFNGLPOINTPARAMETERFPROC glPointParameterf_func = NULL;
-static PFNGLPOINTPARAMETERFVPROC glPointParameterfv_func = NULL;
-static PFNGLSECONDARYCOLOR3FVPROC glSecondaryColor3fv_func = NULL;
-
-static PFNGLATTACHSHADERPROC glAttachShader_func = NULL;
-static PFNGLBINDATTRIBLOCATIONPROC glBindAttribLocation_func = NULL;
-static PFNGLCOMPILESHADERPROC glCompileShader_func = NULL;
-static PFNGLCREATEPROGRAMPROC glCreateProgram_func = NULL;
-static PFNGLCREATESHADERPROC glCreateShader_func = NULL;
-static PFNGLDELETEPROGRAMPROC glDeleteProgram_func = NULL;
-static PFNGLDELETESHADERPROC glDeleteShader_func = NULL;
-static PFNGLGETATTACHEDSHADERSPROC glGetAttachedShaders_func = NULL;
-static PFNGLGETATTRIBLOCATIONPROC glGetAttribLocation_func = NULL;
-static PFNGLGETPROGRAMINFOLOGPROC glGetProgramInfoLog_func = NULL;
-static PFNGLGETSHADERINFOLOGPROC glGetShaderInfoLog_func = NULL;
-static PFNGLGETSHADERIVPROC glGetShaderiv_func = NULL;
-static PFNGLGETPROGRAMIVPROC glGetProgramiv_func = NULL;
-static PFNGLGETSHADERSOURCEPROC glGetShaderSource_func = NULL;
-static PFNGLGETUNIFORMFVPROC glGetUniformfv_func = NULL;
-static PFNGLGETUNIFORMLOCATIONPROC glGetUniformLocation_func = NULL;
-static PFNGLISPROGRAMPROC glIsProgram_func = NULL;
-static PFNGLISSHADERPROC glIsShader_func = NULL;
-static PFNGLLINKPROGRAMPROC glLinkProgram_func = NULL;
-static PFNGLSHADERSOURCEPROC glShaderSource_func = NULL;
-static PFNGLUNIFORM1IPROC glUniform1i_func = NULL;
-static PFNGLUNIFORM1FVPROC glUniform1fv_func = NULL;
-static PFNGLUNIFORM2FVPROC glUniform2fv_func = NULL;
-static PFNGLUNIFORM3FVPROC glUniform3fv_func = NULL;
-static PFNGLUNIFORM4FVPROC glUniform4fv_func = NULL;
-static PFNGLUNIFORMMATRIX2FVPROC glUniformMatrix2fv_func = NULL;
-static PFNGLUNIFORMMATRIX3FVPROC glUniformMatrix3fv_func = NULL;
-static PFNGLUNIFORMMATRIX4FVPROC glUniformMatrix4fv_func = NULL;
-static PFNGLUSEPROGRAMPROC glUseProgram_func = NULL;
-static PFNGLVERTEXATTRIB1FPROC glVertexAttrib1f_func = NULL;
-static PFNGLVERTEXATTRIB2FPROC glVertexAttrib2f_func = NULL;
-static PFNGLVERTEXATTRIB3FPROC glVertexAttrib3f_func = NULL;
-static PFNGLVERTEXATTRIB4FPROC glVertexAttrib4f_func = NULL;
-
-static PFNGLUNIFORMMATRIX2X4FVPROC glUniformMatrix2x4fv_func = NULL;
-static PFNGLUNIFORMMATRIX4X3FVPROC glUniformMatrix4x3fv_func = NULL;
-
-
 #define FLAG_NONE             0x0
 #define FLAG_LOOSE            0x1 // to indicate a looser tolerance test is needed
 #define FLAG_ILLEGAL_SHADER   0x2  // the shader test should not compile
@@ -4067,138 +4021,6 @@ static const ShaderProgram Programs[] = {
 };
 
 
-
-// Get ptrs to API functions.
-bool
-GLSLTest::getFunctions(void)
-{
-	glTexImage3D_func = (PFNGLTEXIMAGE3DPROC) GLUtils::getProcAddress("glTexImage3D");
-	if (!glTexImage3D_func)
-		return false;
-	glActiveTexture_func = (PFNGLACTIVETEXTUREPROC) GLUtils::getProcAddress("glActiveTexture");
-	if (!glActiveTexture_func)
-		return false;
-	glPointParameterf_func = (PFNGLPOINTPARAMETERFPROC) GLUtils::getProcAddress("glPointParameterf");
-	if (!glPointParameterf_func)
-		return false;
-	glPointParameterfv_func = (PFNGLPOINTPARAMETERFVPROC) GLUtils::getProcAddress("glPointParameterfv");
-	if (!glPointParameterfv_func)
-		return false;
-	glSecondaryColor3fv_func = (PFNGLSECONDARYCOLOR3FVPROC) GLUtils::getProcAddress("glSecondaryColor3fv");
-	if (!glSecondaryColor3fv_func)
-		return false;
-	glAttachShader_func = (PFNGLATTACHSHADERPROC) GLUtils::getProcAddress("glAttachShader");
-	if (!glAttachShader_func)
-		return false;
-	glBindAttribLocation_func = (PFNGLBINDATTRIBLOCATIONPROC) GLUtils::getProcAddress("glBindAttribLocation");
-	if (!glBindAttribLocation_func)
-		return false;
-	glCompileShader_func = (PFNGLCOMPILESHADERPROC) GLUtils::getProcAddress("glCompileShader");
-	if (!glCompileShader_func)
-		return false;
-	glCreateProgram_func = (PFNGLCREATEPROGRAMPROC) GLUtils::getProcAddress("glCreateProgram");
-	if (!glCreateProgram_func)
-		return false;
-	glCreateShader_func = (PFNGLCREATESHADERPROC) GLUtils::getProcAddress("glCreateShader");
-	if (!glCreateShader_func)
-		return false;
-	glDeleteProgram_func = (PFNGLDELETEPROGRAMPROC) GLUtils::getProcAddress("glDeleteProgram");
-	if (!glDeleteProgram_func)
-		return false;
-	glDeleteShader_func = (PFNGLDELETESHADERPROC) GLUtils::getProcAddress("glDeleteShader");
-	if (!glDeleteShader_func)
-		return false;
-	glGetAttachedShaders_func = (PFNGLGETATTACHEDSHADERSPROC) GLUtils::getProcAddress("glGetAttachedShaders");
-	if (!glGetAttachedShaders_func)
-		return false;
-	glGetAttribLocation_func = (PFNGLGETATTRIBLOCATIONPROC) GLUtils::getProcAddress("glGetAttribLocation");
-	if (!glGetAttribLocation_func)
-		return false;
-	glGetProgramInfoLog_func = (PFNGLGETPROGRAMINFOLOGPROC) GLUtils::getProcAddress("glGetProgramInfoLog");
-	if (!glGetProgramInfoLog_func)
-		return false;
-	glGetShaderInfoLog_func = (PFNGLGETSHADERINFOLOGPROC) GLUtils::getProcAddress("glGetShaderInfoLog");
-	if (!glGetShaderInfoLog_func)
-		return false;
-	glGetProgramiv_func = (PFNGLGETPROGRAMIVPROC) GLUtils::getProcAddress("glGetProgramiv");
-	if (!glGetProgramiv_func)
-		return false;
-	glGetShaderiv_func = (PFNGLGETSHADERIVPROC) GLUtils::getProcAddress("glGetShaderiv");
-	if (!glGetShaderiv_func)
-		return false;
-	glGetShaderSource_func = (PFNGLGETSHADERSOURCEPROC) GLUtils::getProcAddress("glGetShaderSource");
-	if (!glGetShaderSource_func)
-		return false;
-	glGetUniformLocation_func = (PFNGLGETUNIFORMLOCATIONPROC) GLUtils::getProcAddress("glGetUniformLocation");
-	if (!glGetUniformLocation_func)
-		return false;
-	glGetUniformfv_func = (PFNGLGETUNIFORMFVPROC) GLUtils::getProcAddress("glGetUniformfv");
-	if (!glGetUniformfv_func)
-		return false;
-	glIsProgram_func = (PFNGLISPROGRAMPROC) GLUtils::getProcAddress("glIsProgram");
-	if (!glIsProgram_func)
-		return false;
-	glIsShader_func = (PFNGLISSHADERPROC) GLUtils::getProcAddress("glIsShader");
-	if (!glIsShader_func)
-		return false;
-	glLinkProgram_func = (PFNGLLINKPROGRAMPROC) GLUtils::getProcAddress("glLinkProgram");
-	if (!glLinkProgram_func)
-		return false;
-	glShaderSource_func = (PFNGLSHADERSOURCEPROC) GLUtils::getProcAddress("glShaderSource");
-	if (!glShaderSource_func)
-		return false;
-	glUniform1i_func = (PFNGLUNIFORM1IPROC) GLUtils::getProcAddress("glUniform1i");
-	if (!glUniform1i_func)
-		return false;
-	glUniform1fv_func = (PFNGLUNIFORM1FVPROC) GLUtils::getProcAddress("glUniform1fv");
-	if (!glUniform1fv_func)
-		return false;
-	glUniform2fv_func = (PFNGLUNIFORM2FVPROC) GLUtils::getProcAddress("glUniform2fv");
-	if (!glUniform2fv_func)
-		return false;
-	glUniform3fv_func = (PFNGLUNIFORM3FVPROC) GLUtils::getProcAddress("glUniform3fv");
-	if (!glUniform3fv_func)
-		return false;
-	glUniform4fv_func = (PFNGLUNIFORM3FVPROC) GLUtils::getProcAddress("glUniform4fv");
-	if (!glUniform4fv_func)
-		return false;
-	glUniformMatrix2fv_func = (PFNGLUNIFORMMATRIX2FVPROC) GLUtils::getProcAddress("glUniformMatrix2fv");
-	if (!glUniformMatrix2fv_func)
-		return false;
-	glUniformMatrix3fv_func = (PFNGLUNIFORMMATRIX3FVPROC) GLUtils::getProcAddress("glUniformMatrix3fv");
-	if (!glUniformMatrix3fv_func)
-		return false;
-	glUniformMatrix4fv_func = (PFNGLUNIFORMMATRIX4FVPROC) GLUtils::getProcAddress("glUniformMatrix4fv");
-	if (!glUniformMatrix4fv_func)
-		return false;
-	glUseProgram_func = (PFNGLUSEPROGRAMPROC) GLUtils::getProcAddress("glUseProgram");
-	if (!glUseProgram_func)
-		return false;
-	glVertexAttrib1f_func = (PFNGLVERTEXATTRIB1FPROC) GLUtils::getProcAddress("glVertexAttrib1f");
-	if (!glVertexAttrib1f_func)
-		return false;
-	glVertexAttrib2f_func = (PFNGLVERTEXATTRIB2FPROC) GLUtils::getProcAddress("glVertexAttrib2f");
-	if (!glVertexAttrib2f_func)
-		return false;
-	glVertexAttrib3f_func = (PFNGLVERTEXATTRIB3FPROC) GLUtils::getProcAddress("glVertexAttrib3f");
-	if (!glVertexAttrib3f_func)
-		return false;
-	glVertexAttrib4f_func = (PFNGLVERTEXATTRIB4FPROC) GLUtils::getProcAddress("glVertexAttrib4f");
-	if (!glVertexAttrib4f_func)
-		return false;
-
-	/* 2.1 */
-	glUniformMatrix2x4fv_func = (PFNGLUNIFORMMATRIX2X4FVPROC) GLUtils::getProcAddress("glUniformMatrix2x4fv");
-	if (!glUniformMatrix2x4fv_func)
-		return false;
-	glUniformMatrix4x3fv_func = (PFNGLUNIFORMMATRIX4X3FVPROC) GLUtils::getProcAddress("glUniformMatrix4x3fv");
-	if (!glUniformMatrix4x3fv_func)
-		return false;
-
-	return true;
-}
-
-
 void
 GLSLTest::setupTextures(void)
 {
@@ -4215,7 +4037,7 @@ GLSLTest::setupTextures(void)
 	glGenTextures(1, &obj3D);
 	glGenTextures(1, &objZ);
 
-	glActiveTexture_func(GL_TEXTURE0);
+	glActiveTexture(GL_TEXTURE0);
 
 	//
 	// 2D texture, w/ mipmap
@@ -4334,7 +4156,7 @@ GLSLTest::setupTextures(void)
 		}
 	}
 	glBindTexture(GL_TEXTURE_3D, obj3D);
-	glTexImage3D_func(GL_TEXTURE_3D, 0, GL_RGBA, 16, 16, 16, 0,
+	glTexImage3D(GL_TEXTURE_3D, 0, GL_RGBA, 16, 16, 16, 0,
 		     GL_RGBA, GL_UNSIGNED_BYTE, teximage3D);
 
 	glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
@@ -4352,7 +4174,7 @@ GLSLTest::setupTextures(void)
 				teximageZ[i][j] = 0.75;
 		}
 	}
-	glActiveTexture_func(GL_TEXTURE1); // NOTE: Unit 1
+	glActiveTexture(GL_TEXTURE1); // NOTE: Unit 1
 	glBindTexture(GL_TEXTURE_2D, objZ);
 	glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, 16, 16, 0,
 		     GL_DEPTH_COMPONENT, GL_FLOAT, teximageZ);
@@ -4361,7 +4183,7 @@ GLSLTest::setupTextures(void)
 	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE_ARB,
 					GL_COMPARE_R_TO_TEXTURE_ARB);
 	
-	glActiveTexture_func(GL_TEXTURE0);
+	glActiveTexture(GL_TEXTURE0);
 }
 
 
@@ -4376,9 +4198,9 @@ GLSLTest::setupTextureMatrix1(void)
 		0.1, 0.2, 0.3, 1.0   // col 3
 	};
 	glMatrixMode(GL_TEXTURE);
-	glActiveTexture_func(GL_TEXTURE1);
+	glActiveTexture(GL_TEXTURE1);
 	glLoadMatrixf(m);
-	glActiveTexture_func(GL_TEXTURE0);
+	glActiveTexture(GL_TEXTURE0);
 	glMatrixMode(GL_MODELVIEW);
 }
 
@@ -4400,27 +4222,22 @@ GLSLTest::setup(void)
 	glsl_120 = version >= 1.20;
 	glsl_130 = version >= 1.30;
 
-	if (!getFunctions()) {
-		env->log << "Unable to get pointer to an OpenGL 2.0 API function\n";
-		return false;
-	}
-
 	setupTextures();
 	setupTextureMatrix1();
 
 	// load program inputs
 	glColor4fv(PrimaryColor);
-	glSecondaryColor3fv_func(SecondaryColor);
+	glSecondaryColor3fv(SecondaryColor);
 
 	// other GL state
 	glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, Ambient);
 	glLightfv(GL_LIGHT0, GL_DIFFUSE, LightDiffuse);
 	glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MatDiffuse);
 	glPointSize(PSIZE);
-	glPointParameterf_func(GL_POINT_SIZE_MIN, PSIZE_MIN);
-	glPointParameterf_func(GL_POINT_SIZE_MAX, PSIZE_MAX);
-	glPointParameterf_func(GL_POINT_FADE_THRESHOLD_SIZE, PSIZE_THRESH);
-	glPointParameterfv_func(GL_POINT_DISTANCE_ATTENUATION, PointAtten);
+	glPointParameterf(GL_POINT_SIZE_MIN, PSIZE_MIN);
+	glPointParameterf(GL_POINT_SIZE_MAX, PSIZE_MAX);
+	glPointParameterf(GL_POINT_FADE_THRESHOLD_SIZE, PSIZE_THRESH);
+	glPointParameterfv(GL_POINT_DISTANCE_ATTENUATION, PointAtten);
 	glFogf(GL_FOG_START, FOG_START);
 	glFogf(GL_FOG_END, FOG_END);
 	glFogfv(GL_FOG_COLOR, FogColor);
@@ -4529,10 +4346,9 @@ GLuint
 GLSLTest::loadAndCompileShader(GLenum target, const char *str)
 {
 	GLuint shader;
-	shader = glCreateShader_func(target);
-	glShaderSource_func(shader, 1,
-			    (const GLchar **) &str, NULL);
-	glCompileShader_func(shader);
+	shader = glCreateShader(target);
+	glShaderSource(shader, 1, (const GLchar **) &str, NULL);
+	glCompileShader(shader);
 	return shader;
 }
 
@@ -4547,9 +4363,9 @@ GLSLTest::checkCompileStatus(GLenum target, GLuint shader,
 	GLchar infoLog[1000];
 	GLsizei len;
 
-	glGetShaderiv_func(shader, GL_COMPILE_STATUS, &stat);
+	glGetShaderiv(shader, GL_COMPILE_STATUS, &stat);
 	if (!stat) {
-		glGetShaderInfoLog_func(shader, 1000, &len, infoLog);
+		glGetShaderInfoLog(shader, 1000, &len, infoLog);
 		// env->log << infoLog << "\n";
 	}
 
@@ -4636,17 +4452,17 @@ GLSLTest::testProgram(const ShaderProgram &p)
 		goto cleanup;
 	}
 
-	program = glCreateProgram_func();
+	program = glCreateProgram();
 	if (fragShader)
-		glAttachShader_func(program, fragShader);
+		glAttachShader(program, fragShader);
 	if (vertShader)
-		glAttachShader_func(program, vertShader);
-	glLinkProgram_func(program);
+		glAttachShader(program, vertShader);
+	glLinkProgram(program);
 
 	// check link
 	{
 		GLint stat;
-		glGetProgramiv_func(program, GL_LINK_STATUS, &stat);
+		glGetProgramiv(program, GL_LINK_STATUS, &stat);
 		if (!stat) {
 			if (p.flags & FLAG_ILLEGAL_LINK) {
 				// this is the expected outcome
@@ -4656,7 +4472,7 @@ GLSLTest::testProgram(const ShaderProgram &p)
 			else {
 				GLchar log[1000];
 				GLsizei len;
-				glGetProgramInfoLog_func(program, 1000, &len, log);
+				glGetProgramInfoLog(program, 1000, &len, log);
 				env->log << "FAILURE:\n";
 				env->log << "  Shader test: " << p.name << "\n";
 				env->log << "  Link error: ";
@@ -4678,7 +4494,7 @@ GLSLTest::testProgram(const ShaderProgram &p)
 		}
 	}
 
-	glUseProgram_func(program);
+	glUseProgram(program);
 
 	if (p.flags & FLAG_VERTEX_TEXTURE) {
 		// check if vertex texture units are available
@@ -4692,57 +4508,57 @@ GLSLTest::testProgram(const ShaderProgram &p)
 	}
 
 	// load uniform vars
-	u1 = glGetUniformLocation_func(program, "uniform1");
+	u1 = glGetUniformLocation(program, "uniform1");
 	if (u1 >= 0)
-		glUniform4fv_func(u1, 1, Uniform1);
+		glUniform4fv(u1, 1, Uniform1);
 
-	uArray = glGetUniformLocation_func(program, "uniformArray");
+	uArray = glGetUniformLocation(program, "uniformArray");
 	if (uArray >= 0)
-		glUniform1fv_func(uArray, 4, UniformArray);
+		glUniform1fv(uArray, 4, UniformArray);
 
-	uArray4 = glGetUniformLocation_func(program, "uniformArray4");
+	uArray4 = glGetUniformLocation(program, "uniformArray4");
 	if (uArray4 >= 0)
-		glUniform4fv_func(uArray4, 4, (float *) UniformArray4);
+		glUniform4fv(uArray4, 4, (float *) UniformArray4);
 
-	utex1d = glGetUniformLocation_func(program, "tex1d");
+	utex1d = glGetUniformLocation(program, "tex1d");
 	if (utex1d >= 0)
-		glUniform1i_func(utex1d, 0);  // bind to tex unit 0
+		glUniform1i(utex1d, 0);  // bind to tex unit 0
 
-	utex2d = glGetUniformLocation_func(program, "tex2d");
+	utex2d = glGetUniformLocation(program, "tex2d");
 	if (utex2d >= 0)
-		glUniform1i_func(utex2d, 0);  // bind to tex unit 0
+		glUniform1i(utex2d, 0);  // bind to tex unit 0
 
-	utex3d = glGetUniformLocation_func(program, "tex3d");
+	utex3d = glGetUniformLocation(program, "tex3d");
 	if (utex3d >= 0)
-		glUniform1i_func(utex3d, 0);  // bind to tex unit 0
+		glUniform1i(utex3d, 0);  // bind to tex unit 0
 
-	utexZ = glGetUniformLocation_func(program, "texZ");
+	utexZ = glGetUniformLocation(program, "texZ");
 	if (utexZ >= 0)
-		glUniform1i_func(utexZ, 1);  // bind to tex unit 1
+		glUniform1i(utexZ, 1);  // bind to tex unit 1
 
-	umat4 = glGetUniformLocation_func(program, "uniformMat4");
+	umat4 = glGetUniformLocation(program, "uniformMat4");
 	if (umat4 >= 0)
-		glUniformMatrix4fv_func(umat4, 1, GL_FALSE, uniformMatrix);
+		glUniformMatrix4fv(umat4, 1, GL_FALSE, uniformMatrix);
 
-	umat4t = glGetUniformLocation_func(program, "uniformMat4t");
+	umat4t = glGetUniformLocation(program, "uniformMat4t");
 	if (umat4t >= 0)
-		glUniformMatrix4fv_func(umat4t, 1, GL_TRUE, uniformMatrix);
+		glUniformMatrix4fv(umat4t, 1, GL_TRUE, uniformMatrix);
 
-	umat2x4 = glGetUniformLocation_func(program, "uniformMat2x4");
+	umat2x4 = glGetUniformLocation(program, "uniformMat2x4");
 	if (umat2x4 >= 0)
-		glUniformMatrix2x4fv_func(umat2x4, 1, GL_FALSE, uniformMatrix2x4);
+		glUniformMatrix2x4fv(umat2x4, 1, GL_FALSE, uniformMatrix2x4);
 
-	umat2x4t = glGetUniformLocation_func(program, "uniformMat2x4t");
+	umat2x4t = glGetUniformLocation(program, "uniformMat2x4t");
 	if (umat2x4t >= 0)
-		glUniformMatrix2x4fv_func(umat2x4t, 1, GL_TRUE, uniformMatrix2x4);
+		glUniformMatrix2x4fv(umat2x4t, 1, GL_TRUE, uniformMatrix2x4);
 
-	umat4x3 = glGetUniformLocation_func(program, "uniformMat4x3");
+	umat4x3 = glGetUniformLocation(program, "uniformMat4x3");
 	if (umat4x3 >= 0)
-		glUniformMatrix4x3fv_func(umat4x3, 1, GL_FALSE, uniformMatrix4x3);
+		glUniformMatrix4x3fv(umat4x3, 1, GL_FALSE, uniformMatrix4x3);
 
-	umat4x3t = glGetUniformLocation_func(program, "uniformMat4x3t");
+	umat4x3t = glGetUniformLocation(program, "uniformMat4x3t");
 	if (umat4x3t >= 0)
-		glUniformMatrix4x3fv_func(umat4x3t, 1, GL_TRUE, uniformMatrix4x3);
+		glUniformMatrix4x3fv(umat4x3t, 1, GL_TRUE, uniformMatrix4x3);
 
 
 	// to avoid potential issue with undefined result.depth.z
@@ -4810,10 +4626,10 @@ GLSLTest::testProgram(const ShaderProgram &p)
 
  cleanup:
 	if (fragShader)
-		glDeleteShader_func(fragShader);
+		glDeleteShader(fragShader);
 	if (vertShader)
-		glDeleteShader_func(vertShader);
-	glDeleteProgram_func(program);
+		glDeleteShader(vertShader);
+	glDeleteProgram(program);
 
 	return retVal;
 }
diff --git a/tests/glean/tglsl1.h b/tests/glean/tglsl1.h
index 57cf66d..933fa3e 100644
--- a/tests/glean/tglsl1.h
+++ b/tests/glean/tglsl1.h
@@ -75,7 +75,6 @@ private:
 	GLfloat looseTolerance[5];
         bool glsl_120;   // GLSL 1.20 or higher supported?
         bool glsl_130;   // GLSL 1.30 or higher supported?
-        bool getFunctions(void);
         void setupTextures(void);
         void setupTextureMatrix1(void);
 	bool setup(void);
diff --git a/tests/glean/toccluqry.cpp b/tests/glean/toccluqry.cpp
index 0ea2d37..d97b7ee 100644
--- a/tests/glean/toccluqry.cpp
+++ b/tests/glean/toccluqry.cpp
@@ -43,31 +43,15 @@
 
 
 #define START_QUERY(id)\
-	glBeginQueryARB_func(GL_SAMPLES_PASSED_ARB, id);
+	glBeginQueryARB(GL_SAMPLES_PASSED_ARB, id);
 
 
 #define TERM_QUERY()\
-	glEndQueryARB_func(GL_SAMPLES_PASSED_ARB);\
+	glEndQueryARB(GL_SAMPLES_PASSED_ARB);\
 
 
 namespace GLEAN {
 
-
-// GL_VERSION_1_5
-static PFNGLBEGINQUERYPROC glBeginQuery_func = NULL;
-static PFNGLENDQUERYPROC glEndQuery_func = NULL;
-
-// GL_ARB_occlusion_query
-static PFNGLGENQUERIESARBPROC glGenQueriesARB_func = NULL;
-static PFNGLDELETEQUERIESARBPROC glDeleteQueriesARB_func = NULL;
-static PFNGLISQUERYARBPROC glIsQueryARB_func = NULL;
-static PFNGLBEGINQUERYARBPROC glBeginQueryARB_func = NULL;
-static PFNGLENDQUERYARBPROC glEndQueryARB_func = NULL;
-static PFNGLGETQUERYIVARBPROC glGetQueryivARB_func = NULL;
-static PFNGLGETQUERYOBJECTIVARBPROC glGetQueryObjectivARB_func = NULL;
-static PFNGLGETQUERYOBJECTUIVARBPROC glGetQueryObjectuivARB_func = NULL;
-
-
 void
 OccluQryTest::reportError(const char *msg)
 {
@@ -110,27 +94,6 @@ bool OccluQryTest::chk_ext()
 
 void OccluQryTest::setup()
 {
-	glBeginQuery_func = (PFNGLBEGINQUERYPROC) GLUtils::getProcAddress("glBeginQuery");
-	assert(glBeginQuery_func);
-	glEndQuery_func = (PFNGLENDQUERYPROC) GLUtils::getProcAddress("glEndQuery");
-	assert(glEndQuery_func);
-
-	glGenQueriesARB_func = (PFNGLGENQUERIESARBPROC) GLUtils::getProcAddress("glGenQueriesARB");
-	assert(glGenQueriesARB_func);
-	glDeleteQueriesARB_func = (PFNGLDELETEQUERIESARBPROC) GLUtils::getProcAddress("glDeleteQueriesARB");
-	assert(glDeleteQueriesARB_func);
-	glIsQueryARB_func = (PFNGLISQUERYARBPROC) GLUtils::getProcAddress("glIsQueryARB");
-	assert(glIsQueryARB_func);
-	glBeginQueryARB_func = (PFNGLBEGINQUERYARBPROC) GLUtils::getProcAddress("glBeginQueryARB");
-	assert(glBeginQueryARB_func);
-	glEndQueryARB_func = (PFNGLENDQUERYARBPROC) GLUtils::getProcAddress("glEndQueryARB");
-	assert(glEndQueryARB_func);
-	glGetQueryivARB_func = (PFNGLGETQUERYIVARBPROC) GLUtils::getProcAddress("glGetQueryivARB");
-	assert(glGetQueryivARB_func);
-	glGetQueryObjectivARB_func = (PFNGLGETQUERYOBJECTIVARBPROC) GLUtils::getProcAddress("glGetQueryObjectivARB");
-	assert(glGetQueryObjectivARB_func);
-	glGetQueryObjectuivARB_func = (PFNGLGETQUERYOBJECTUIVARBPROC) GLUtils::getProcAddress("glGetQueryObjectuivARB");
-	assert(glGetQueryObjectuivARB_func);
 }
 
 GLuint OccluQryTest::find_unused_id()
@@ -144,7 +107,7 @@ GLuint OccluQryTest::find_unused_id()
 	while (1) {
 		/* assuming that at least 2^32-1 <id> can be generated */
 		id = idRand.next();
-		if (id != 0 && glIsQueryARB_func(id) == GL_FALSE)
+		if (id != 0 && glIsQueryARB(id) == GL_FALSE)
 			return id;
 		if (++ counter >= MAX_FIND_ID_ROUND) {
 			char str[1000];
@@ -210,9 +173,9 @@ bool OccluQryTest::conformOQ_GetObjivAval_multi1(GLuint id)
 	glPopMatrix();
 	
 	do {
-		glGetQueryObjectivARB_func(id, GL_QUERY_RESULT_AVAILABLE_ARB, &ready);
+		glGetQueryObjectivARB(id, GL_QUERY_RESULT_AVAILABLE_ARB, &ready);
 	} while (!ready);
-	glGetQueryObjectuivARB_func(id, GL_QUERY_RESULT_ARB, &passed);
+	glGetQueryObjectuivARB(id, GL_QUERY_RESULT_ARB, &passed);
 
 	// 'passed' should be zero
 	return passed > 0 ? false : true;
@@ -275,16 +238,16 @@ bool OccluQryTest::conformOQ_GetObjivAval_multi2()
 
 	glPopMatrix();
 
-	glGetQueryObjectuivARB_func(id1, GL_QUERY_RESULT_ARB, &passed1);
-	glGetQueryObjectuivARB_func(id2, GL_QUERY_RESULT_ARB, &passed2);
-	glGetQueryObjectuivARB_func(id3, GL_QUERY_RESULT_ARB, &passed3);
+	glGetQueryObjectuivARB(id1, GL_QUERY_RESULT_ARB, &passed1);
+	glGetQueryObjectuivARB(id2, GL_QUERY_RESULT_ARB, &passed2);
+	glGetQueryObjectuivARB(id3, GL_QUERY_RESULT_ARB, &passed3);
 
 	glDepthMask(GL_TRUE);
 
 	
-	glDeleteQueriesARB_func(1, &id1);
-	glDeleteQueriesARB_func(1, &id2);
-	glDeleteQueriesARB_func(1, &id3);
+	glDeleteQueriesARB(1, &id1);
+	glDeleteQueriesARB(1, &id2);
+	glDeleteQueriesARB(1, &id3);
 
 	glPopMatrix();
 	glMatrixMode( GL_PROJECTION );
@@ -318,7 +281,7 @@ bool OccluQryTest::conformOQ_GetQry_CnterBit()
 
 	/* get the minimum bit number supported by the implementation, 
 	 * and check the legality of result of GL_QUERY_COUNTER_BITS_ARB */
-	glGetQueryivARB_func(GL_SAMPLES_PASSED_ARB, GL_QUERY_COUNTER_BITS_ARB, &bit_num);
+	glGetQueryivARB(GL_SAMPLES_PASSED_ARB, GL_QUERY_COUNTER_BITS_ARB, &bit_num);
 	glGetIntegerv(GL_MAX_VIEWPORT_DIMS, dims);
 	err = glGetError();
 	if (err == GL_INVALID_OPERATION || err == GL_INVALID_ENUM) 
@@ -346,14 +309,14 @@ bool OccluQryTest::conformOQ_Begin_unused_id()
 	if (id == 0)
 		return false;
 
-	glBeginQuery_func(GL_SAMPLES_PASSED_ARB, id);
+	glBeginQuery(GL_SAMPLES_PASSED_ARB, id);
 
-	if (glIsQueryARB_func(id) == GL_FALSE) {
+	if (glIsQueryARB(id) == GL_FALSE) {
 		reportError("Begin with a unused id failed.");
 		pass = false;
 	}
 
-	glEndQuery_func(GL_SAMPLES_PASSED_ARB);
+	glEndQuery(GL_SAMPLES_PASSED_ARB);
 
 	return pass;
 }
@@ -365,7 +328,7 @@ bool OccluQryTest::conformOQ_EndAfter(GLuint id)
 	START_QUERY(id);
 	TERM_QUERY();  
 
-	glEndQueryARB_func(GL_SAMPLES_PASSED_ARB);
+	glEndQueryARB(GL_SAMPLES_PASSED_ARB);
 
 	if (glGetError() != GL_INVALID_OPERATION) {
 		reportError("No GL_INVALID_OPERATION generated if "
@@ -385,7 +348,7 @@ bool OccluQryTest::conformOQ_GenIn(GLuint id)
 
 	START_QUERY(id);
 
-	glGenQueriesARB_func(1, &id);
+	glGenQueriesARB(1, &id);
 	if (glGetError() != GL_NO_ERROR) {
 		reportError("Error generated when GenQueries called "
 			    "in the progress of another.");
@@ -408,8 +371,8 @@ bool OccluQryTest::conformOQ_DeleteIn(GLuint id)
 	START_QUERY(id);
 
 	if (id > 0) {
-		glGenQueriesARB_func(1, &another_id);
-		glDeleteQueriesARB_func(1, &another_id);
+		glGenQueriesARB(1, &another_id);
+		glDeleteQueriesARB(1, &another_id);
 
 		if (glGetError() != GL_NO_ERROR) {
 			reportError("Error generated when DeleteQueries called "
@@ -434,7 +397,7 @@ bool OccluQryTest::conformOQ_BeginIn(GLuint id)
 
 	/* Issue another BeginQueryARB while another query is already in 
 	   progress */
-	glBeginQueryARB_func(GL_SAMPLES_PASSED_ARB, id);
+	glBeginQueryARB(GL_SAMPLES_PASSED_ARB, id);
 
 	if (glGetError() != GL_INVALID_OPERATION) {
 		reportError("No GL_INVALID_OPERATION generated if "
@@ -456,11 +419,11 @@ bool OccluQryTest::conformOQ_GetObjAvalIn(GLuint id)
 
 	START_QUERY(id);
 
-	glGetQueryObjectivARB_func(id, GL_QUERY_RESULT_AVAILABLE_ARB, &param);
+	glGetQueryObjectivARB(id, GL_QUERY_RESULT_AVAILABLE_ARB, &param);
 	if (glGetError() != GL_INVALID_OPERATION)
 		pass = false;
 
-	glGetQueryObjectuivARB_func(id, GL_QUERY_RESULT_AVAILABLE_ARB, (GLuint *)&param);
+	glGetQueryObjectuivARB(id, GL_QUERY_RESULT_AVAILABLE_ARB, (GLuint *)&param);
 	if (glGetError() != GL_INVALID_OPERATION)
 		pass = false;
 
@@ -484,11 +447,11 @@ bool OccluQryTest::conformOQ_GetObjResultIn(GLuint id)
 
 	START_QUERY(id);
 
-	glGetQueryObjectivARB_func(id, GL_QUERY_RESULT_ARB, &param);
+	glGetQueryObjectivARB(id, GL_QUERY_RESULT_ARB, &param);
 	if (glGetError() != GL_INVALID_OPERATION)
 		pass = false;
 
-	glGetQueryObjectuivARB_func(id, GL_QUERY_RESULT_ARB, (GLuint *)&param);
+	glGetQueryObjectuivARB(id, GL_QUERY_RESULT_ARB, (GLuint *)&param);
 	if (glGetError() != GL_INVALID_OPERATION)
 		pass = false;
 
@@ -518,7 +481,7 @@ bool OccluQryTest::conformOQ_GetObjivAval(GLuint id)
 	if (id_tmp == 0)
 		return false;
 
-	glGetQueryObjectivARB_func(id_tmp, GL_QUERY_RESULT_AVAILABLE_ARB, &param);
+	glGetQueryObjectivARB(id_tmp, GL_QUERY_RESULT_AVAILABLE_ARB, &param);
 
 	if (glGetError() != GL_INVALID_OPERATION) {
 		reportError("No GL_INVALID_OPERATION generated if "
@@ -550,8 +513,8 @@ bool OccluQryTest::conformOQ_Gen_Delete(unsigned int id_n)
 		return false;
 	}
 
-	glGenQueriesARB_func(id_n, ids1);
-	glGenQueriesARB_func(id_n, ids2);
+	glGenQueriesARB(id_n, ids1);
+	glGenQueriesARB(id_n, ids2);
 
 	/* compare whether <id> generated during the previous 2 rounds are
 	 * duplicated */
@@ -574,7 +537,7 @@ bool OccluQryTest::conformOQ_Gen_Delete(unsigned int id_n)
 #if 0
 	/* Checkout whether the Query ID just generated is valid */	
 	for (i = 0; i < id_n; i ++) {
-		if (glIsQueryARB_func(ids1[i]) == GL_FALSE) {
+		if (glIsQueryARB(ids1[i]) == GL_FALSE) {
 			char str[1000];
 			sprintf(str, "id [%d] just generated is not valid.", ids1[i]);
 			reportError(str);
@@ -585,9 +548,9 @@ bool OccluQryTest::conformOQ_Gen_Delete(unsigned int id_n)
 
 	/* if <id> is a non-zero value that is not the name of a query object,
 	 * IsQueryARB returns FALSE. */
-	glDeleteQueriesARB_func(id_n, ids1);
+	glDeleteQueriesARB(id_n, ids1);
 	for (i = 0; i < id_n; i ++) {
-		if (glIsQueryARB_func(ids1[i]) == GL_TRUE) {
+		if (glIsQueryARB(ids1[i]) == GL_TRUE) {
 			char str[1000];
 			sprintf(str, "id [%d] just deleted is still valid.", ids1[i]);
 			reportError(str);
@@ -596,7 +559,7 @@ bool OccluQryTest::conformOQ_Gen_Delete(unsigned int id_n)
 	}
 
 	/* Delete only for sanity purpose */
-	glDeleteQueriesARB_func(id_n, ids2);
+	glDeleteQueriesARB(id_n, ids2);
 
 	if (ids1)
 		free(ids1);
@@ -609,7 +572,7 @@ bool OccluQryTest::conformOQ_Gen_Delete(unsigned int id_n)
 		return false;
 
 	for (i = 0; i < id_n; i ++) {
-		glGenQueriesARB_func(1, ids1 + i);
+		glGenQueriesARB(1, ids1 + i);
 		for (j = 0; j < i; j ++) {
 			if (ids1[i] == ids1[j]) {
 				char str[1000];
@@ -620,7 +583,7 @@ bool OccluQryTest::conformOQ_Gen_Delete(unsigned int id_n)
 		}
 	}
 
-	glDeleteQueriesARB_func(id_n, ids1);
+	glDeleteQueriesARB(id_n, ids1);
 	if (ids1)
 		free(ids1);
 
@@ -631,7 +594,7 @@ bool OccluQryTest::conformOQ_Gen_Delete(unsigned int id_n)
 /* If <id> is zero, IsQueryARB should return FALSE.*/
 bool OccluQryTest::conformOQ_IsIdZero(void)
 {
-	if (glIsQueryARB_func(0) == GL_TRUE) {
+	if (glIsQueryARB(0) == GL_TRUE) {
 		reportError("zero is treated as a valid id by glIsQueryARB().");
 		return false;
 	}
@@ -644,7 +607,7 @@ bool OccluQryTest::conformOQ_IsIdZero(void)
  * should be generated. */
 bool OccluQryTest::conformOQ_BeginIdZero(void)
 {
-	glBeginQueryARB_func(GL_SAMPLES_PASSED_ARB, 0);
+	glBeginQueryARB(GL_SAMPLES_PASSED_ARB, 0);
 	if (glGetError() != GL_INVALID_OPERATION) {
 		reportError("No GL_INVALID_OPERATION generated if "
 				"BeginQuery with zero ID.");
@@ -665,7 +628,7 @@ void OccluQryTest::runOne(MultiTestResult &r, Window &w)
 		return;
 	setup();
 	glEnable(GL_DEPTH_TEST);
-	glGenQueriesARB_func(1, &queryId);
+	glGenQueriesARB(1, &queryId);
 
 	if (queryId == 0)
 		return;
@@ -713,7 +676,7 @@ void OccluQryTest::runOne(MultiTestResult &r, Window &w)
 	result = conformOQ_BeginIdZero();
 	reportPassFail(r, result, "conformOQ_BeginIdZero");
 
-	glDeleteQueriesARB_func(1, &queryId);
+	glDeleteQueriesARB(1, &queryId);
 
 	r.pass = (r.numFailed == 0);
 #endif
diff --git a/tests/glean/tpbo.cpp b/tests/glean/tpbo.cpp
index e93d6a2..002c444 100644
--- a/tests/glean/tpbo.cpp
+++ b/tests/glean/tpbo.cpp
@@ -44,19 +44,6 @@
 
 namespace GLEAN
 {
-// GL_VERSION_1_5
-static PFNGLBINDBUFFERPROC glBindBuffer_func = NULL;
-static PFNGLMAPBUFFERPROC glMapBuffer_func = NULL;
-static PFNGLUNMAPBUFFERPROC glUnmapBuffer_func = NULL;
-
-// GL_ARB_vertex_buffer_object
-static PFNGLBINDBUFFERARBPROC glBindBufferARB_func = NULL;
-static PFNGLDELETEBUFFERSARBPROC glDeleteBuffersARB_func = NULL;
-static PFNGLGENBUFFERSARBPROC glGenBuffersARB_func = NULL;
-static PFNGLISBUFFERARBPROC glIsBufferARB_func = NULL;
-static PFNGLBUFFERDATAARBPROC glBufferDataARB_func = NULL;
-static PFNGLMAPBUFFERARBPROC glMapBufferARB_func = NULL;
-static PFNGLUNMAPBUFFERARBPROC glUnmapBufferARB_func = NULL;
 
 static int usePBO;
 #define BUFFER_OFFSET(i) ((char *)NULL + (i))
@@ -104,28 +91,6 @@ bool PBOTest::setup(void)
       usePBO = 1;
    }
 
-   glBindBuffer_func = (PFNGLBINDBUFFERPROC) GLUtils::getProcAddress("glBindBuffer");
-   assert(glBindBuffer_func);
-   glMapBuffer_func = (PFNGLMAPBUFFERPROC) GLUtils::getProcAddress("glMapBuffer");
-   assert(glMapBuffer_func);
-   glUnmapBuffer_func = (PFNGLUNMAPBUFFERPROC) GLUtils::getProcAddress("glUnmapBuffer");
-   assert(glUnmapBuffer_func);
-
-   glBindBufferARB_func = (PFNGLBINDBUFFERARBPROC) GLUtils::getProcAddress("glBindBufferARB");
-   assert(glBindBufferARB_func);
-   glDeleteBuffersARB_func = (PFNGLDELETEBUFFERSARBPROC) GLUtils::getProcAddress("glDeleteBuffersARB");
-   assert(glDeleteBuffersARB_func);
-   glGenBuffersARB_func = (PFNGLGENBUFFERSARBPROC) GLUtils::getProcAddress("glGenBuffersARB");
-   assert(glGenBuffersARB_func);
-   glIsBufferARB_func = (PFNGLISBUFFERARBPROC) GLUtils::getProcAddress("glIsBufferARB");
-   assert(glIsBufferARB_func);
-   glBufferDataARB_func = (PFNGLBUFFERDATAARBPROC) GLUtils::getProcAddress("glBufferDataARB");
-   assert(glBufferDataARB_func);
-   glMapBufferARB_func = (PFNGLMAPBUFFERARBPROC) GLUtils::getProcAddress("glMapBufferARB");
-   assert(glMapBufferARB_func);
-   glUnmapBufferARB_func = (PFNGLUNMAPBUFFERARBPROC) GLUtils::getProcAddress("glUnmapBufferARB");
-   assert(glUnmapBufferARB_func);
-
    return true;
 }
 
@@ -197,32 +162,32 @@ bool PBOTest::testSanity(void)
       return false;
    }
 
-   glGenBuffersARB_func(1, pbs);
+   glGenBuffersARB(1, pbs);
 
-   if (glIsBufferARB_func(pbs[0]) != GL_FALSE) {
+   if (glIsBufferARB(pbs[0]) != GL_FALSE) {
       REPORT_FAILURE("glIsBufferARB failed");
       return false;
    }
 
-   glBindBufferARB_func(GL_PIXEL_UNPACK_BUFFER_ARB, pbs[0]);
+   glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, pbs[0]);
    glGetIntegerv(GL_PIXEL_UNPACK_BUFFER_BINDING_ARB, (GLint *) & pb_binding);
-   glBindBufferARB_func(GL_PIXEL_UNPACK_BUFFER_ARB, 0);
+   glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, 0);
    if (pb_binding != pbs[0]) {
       REPORT_FAILURE("Failed to bind unpack pixel buffer object");
       return false;
    }
 
-   glBindBufferARB_func(GL_PIXEL_PACK_BUFFER_ARB, pbs[0]);
+   glBindBufferARB(GL_PIXEL_PACK_BUFFER_ARB, pbs[0]);
    glGetIntegerv(GL_PIXEL_PACK_BUFFER_BINDING_ARB, (GLint *) & pb_binding);
-   glBindBufferARB_func(GL_PIXEL_PACK_BUFFER_ARB, 0);
+   glBindBufferARB(GL_PIXEL_PACK_BUFFER_ARB, 0);
    if (pb_binding != pbs[0]) {
       REPORT_FAILURE("Failed to bind unpack pixel buffer object");
       return false;
    }
 
-   glDeleteBuffersARB_func(1, pbs);
+   glDeleteBuffersARB(1, pbs);
 
-   if (glIsBufferARB_func(pbs[0]) == GL_TRUE) {
+   if (glIsBufferARB(pbs[0]) == GL_TRUE) {
       REPORT_FAILURE("glIsBufferARB failed");
       return false;
    }
@@ -243,24 +208,24 @@ bool PBOTest::testDrawPixels(void)
    GLubyte * pboPackMem = NULL;
    GLubyte black[3] = { 0, 0, 0 };
 
-   glBindBuffer_func(GL_PIXEL_UNPACK_BUFFER_ARB, 0);
-   glBindBuffer_func(GL_PIXEL_PACK_BUFFER_ARB, 0);
+   glBindBuffer(GL_PIXEL_UNPACK_BUFFER_ARB, 0);
+   glBindBuffer(GL_PIXEL_PACK_BUFFER_ARB, 0);
 
    for (useUnpackBuffer = 0; useUnpackBuffer < usePBO + 1; useUnpackBuffer++) {
       for (usePackBuffer = 0; usePackBuffer < usePBO + 1; usePackBuffer++) {
          glClearColor(0.0, 0.0, 0.0, 1.0);
          glClear(GL_COLOR_BUFFER_BIT);
          if (useUnpackBuffer) {
-            glGenBuffersARB_func(1, pb_unpack);
-            glBindBufferARB_func(GL_PIXEL_UNPACK_BUFFER_ARB, pb_unpack[0]);
-            glBufferDataARB_func(GL_PIXEL_UNPACK_BUFFER_ARB,
+            glGenBuffersARB(1, pb_unpack);
+            glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, pb_unpack[0]);
+            glBufferDataARB(GL_PIXEL_UNPACK_BUFFER_ARB,
                          TEXSIZE * TEXSIZE * 4 * sizeof(GLubyte), NULL,
                          GL_STREAM_DRAW);
          }
          GLubyte *pboMem = NULL;
          if (useUnpackBuffer) {
-            pboMem = (GLubyte *) glMapBufferARB_func(GL_PIXEL_UNPACK_BUFFER_ARB,
-                                       GL_WRITE_ONLY);
+            pboMem = (GLubyte *) glMapBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB,
+                                                GL_WRITE_ONLY);
          }
          else {
             pboMem = t;
@@ -275,28 +240,28 @@ bool PBOTest::testDrawPixels(void)
             }
 
          if (useUnpackBuffer) {
-            glUnmapBufferARB_func(GL_PIXEL_UNPACK_BUFFER_ARB);
-            glBindBufferARB_func(GL_PIXEL_UNPACK_BUFFER_ARB, 0);
+            glUnmapBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB);
+            glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, 0);
          }
 
          if (useUnpackBuffer) {
-            glBindBufferARB_func(GL_PIXEL_UNPACK_BUFFER_ARB, pb_unpack[0]);
+            glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, pb_unpack[0]);
             glDrawPixels(TEXSIZE, TEXSIZE, GL_BGRA, GL_UNSIGNED_BYTE, NULL);
-            glBindBufferARB_func(GL_PIXEL_UNPACK_BUFFER_ARB, 0);
+            glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, 0);
          }
          else
             glDrawPixels(TEXSIZE, TEXSIZE, GL_BGRA, GL_UNSIGNED_BYTE, pboMem);
 
          // Check the result
          if (usePackBuffer) {
-            glGenBuffersARB_func(1, pb_pack);
-            glBindBufferARB_func(GL_PIXEL_PACK_BUFFER_ARB, pb_pack[0]);
-            glBufferDataARB_func(GL_PIXEL_PACK_BUFFER_ARB,
-                         windowSize * windowSize * 4 *
-                         sizeof(GL_UNSIGNED_BYTE), NULL, GL_STREAM_DRAW);
+            glGenBuffersARB(1, pb_pack);
+            glBindBufferARB(GL_PIXEL_PACK_BUFFER_ARB, pb_pack[0]);
+            glBufferDataARB(GL_PIXEL_PACK_BUFFER_ARB,
+                            windowSize * windowSize * 4 *
+                            sizeof(GL_UNSIGNED_BYTE), NULL, GL_STREAM_DRAW);
             glReadPixels(0, 0, windowSize, windowSize, GL_BGRA,
                          GL_UNSIGNED_BYTE, NULL);
-            pboPackMem = (GLubyte *) glMapBufferARB_func(GL_PIXEL_PACK_BUFFER_ARB,
+            pboPackMem = (GLubyte *) glMapBufferARB(GL_PIXEL_PACK_BUFFER_ARB,
                                        GL_READ_ONLY);
          }
          else {
@@ -342,13 +307,13 @@ bool PBOTest::testDrawPixels(void)
 
 
          if (usePackBuffer) {
-            glBindBuffer_func(GL_PIXEL_PACK_BUFFER_ARB, 0);
-            glDeleteBuffersARB_func(1, pb_pack);
+            glBindBuffer(GL_PIXEL_PACK_BUFFER_ARB, 0);
+            glDeleteBuffersARB(1, pb_pack);
          }
 
          if (useUnpackBuffer) {
-            glBindBuffer_func(GL_PIXEL_UNPACK_BUFFER_ARB, 0);
-            glDeleteBuffersARB_func(1, pb_unpack);
+            glBindBuffer(GL_PIXEL_UNPACK_BUFFER_ARB, 0);
+            glDeleteBuffersARB(1, pb_unpack);
          }
 
       }
@@ -368,8 +333,8 @@ bool PBOTest::testPixelMap(void)
    int size;
    int max;
 
-   glBindBufferARB_func(GL_PIXEL_UNPACK_BUFFER_ARB, 0);
-   glBindBufferARB_func(GL_PIXEL_PACK_BUFFER_ARB, 0);
+   glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, 0);
+   glBindBufferARB(GL_PIXEL_PACK_BUFFER_ARB, 0);
 
    glGetIntegerv(GL_MAX_PIXEL_MAP_TABLE, &max);
 
@@ -379,15 +344,15 @@ bool PBOTest::testPixelMap(void)
          glClearColor(0.0, 0.0, 0.0, 1.0);
          glClear(GL_COLOR_BUFFER_BIT);
          if (useUnpackBuffer) {
-            glGenBuffersARB_func(1, pb_unpack);
-            glBindBufferARB_func(GL_PIXEL_UNPACK_BUFFER_ARB, pb_unpack[0]);
-            glBufferDataARB_func(GL_PIXEL_UNPACK_BUFFER_ARB, max * sizeof(GLushort),
-                         NULL, GL_STREAM_DRAW);
+            glGenBuffersARB(1, pb_unpack);
+            glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, pb_unpack[0]);
+            glBufferDataARB(GL_PIXEL_UNPACK_BUFFER_ARB, max * sizeof(GLushort),
+                            NULL, GL_STREAM_DRAW);
          }
          GLushort *pboMem = NULL;
          if (useUnpackBuffer) {
-            pboMem = (GLushort *) glMapBufferARB_func(GL_PIXEL_UNPACK_BUFFER_ARB,
-                                        GL_WRITE_ONLY);
+            pboMem = (GLushort *) glMapBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB,
+                                                 GL_WRITE_ONLY);
          }
          else {
             pboMem = (GLushort *) malloc(sizeof(GLushort) * max);
@@ -396,12 +361,12 @@ bool PBOTest::testPixelMap(void)
             pboMem[i] = max - i - 1;
 
          if (useUnpackBuffer) {
-            glUnmapBufferARB_func(GL_PIXEL_UNPACK_BUFFER_ARB);
+            glUnmapBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB);
             glPixelMapusv(GL_PIXEL_MAP_R_TO_R, max, NULL);
             glPixelMapusv(GL_PIXEL_MAP_G_TO_G, max, NULL);
             glPixelMapusv(GL_PIXEL_MAP_B_TO_B, max, NULL);
             glPixelMapusv(GL_PIXEL_MAP_A_TO_A, max, NULL);
-            glBindBufferARB_func(GL_PIXEL_UNPACK_BUFFER_ARB, 0);
+            glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, 0);
          }
          else {
             glPixelMapusv(GL_PIXEL_MAP_R_TO_R, max, pboMem);
@@ -421,13 +386,13 @@ bool PBOTest::testPixelMap(void)
 
          // Read back pixel map
          if (usePackBuffer) {
-            glGenBuffersARB_func(1, pb_pack);
-            glBindBufferARB_func(GL_PIXEL_PACK_BUFFER_ARB, pb_pack[0]);
-            glBufferDataARB_func(GL_PIXEL_PACK_BUFFER_ARB, max * sizeof(GLushort),
-                         NULL, GL_STREAM_DRAW);
+            glGenBuffersARB(1, pb_pack);
+            glBindBufferARB(GL_PIXEL_PACK_BUFFER_ARB, pb_pack[0]);
+            glBufferDataARB(GL_PIXEL_PACK_BUFFER_ARB, max * sizeof(GLushort),
+                            NULL, GL_STREAM_DRAW);
             glGetPixelMapusv(GL_PIXEL_MAP_R_TO_R, NULL);
-            pboMem = (GLushort *) glMapBufferARB_func(GL_PIXEL_PACK_BUFFER_ARB,
-                                        GL_READ_ONLY);
+            pboMem = (GLushort *) glMapBufferARB(GL_PIXEL_PACK_BUFFER_ARB,
+                                                 GL_READ_ONLY);
          }
          else {
             pboMem = (GLushort *) malloc(sizeof(GLushort) * max);
@@ -443,17 +408,17 @@ bool PBOTest::testPixelMap(void)
 
 
          if (usePackBuffer) {
-            glUnmapBufferARB_func(GL_PIXEL_PACK_BUFFER_ARB);
-            glBindBufferARB_func(GL_PIXEL_PACK_BUFFER_ARB, 0);
-            glDeleteBuffersARB_func(1, pb_pack);
+            glUnmapBufferARB(GL_PIXEL_PACK_BUFFER_ARB);
+            glBindBufferARB(GL_PIXEL_PACK_BUFFER_ARB, 0);
+            glDeleteBuffersARB(1, pb_pack);
          }
          else {
             free(pboMem);
          }
 
          if (useUnpackBuffer) {
-            glBindBufferARB_func(GL_PIXEL_UNPACK_BUFFER_ARB, 0);
-            glDeleteBuffersARB_func(1, pb_unpack);
+            glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, 0);
+            glDeleteBuffersARB(1, pb_unpack);
          }
 
       }
@@ -476,8 +441,8 @@ bool PBOTest::testBitmap(void)
    GLubyte *pboUnpackMem = NULL;
    GLfloat *pboPackMem = NULL;
 
-   glBindBufferARB_func(GL_PIXEL_UNPACK_BUFFER_ARB, 0);
-   glBindBufferARB_func(GL_PIXEL_PACK_BUFFER_ARB, 0);
+   glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, 0);
+   glBindBufferARB(GL_PIXEL_PACK_BUFFER_ARB, 0);
 
    for (usePackBuffer = 0; usePackBuffer < usePBO + 1; usePackBuffer++) {
       for (useUnpackBuffer = 0; useUnpackBuffer < usePBO + 1;
@@ -486,12 +451,12 @@ bool PBOTest::testBitmap(void)
          glClear(GL_COLOR_BUFFER_BIT);
 
          if (useUnpackBuffer) {
-            glGenBuffersARB_func(1, pb_unpack);
-            glBindBufferARB_func(GL_PIXEL_UNPACK_BUFFER_ARB, pb_unpack[0]);
-            glBufferDataARB_func(GL_PIXEL_UNPACK_BUFFER_ARB, TEXSIZE * TEXSIZE, NULL,
-                         GL_STREAM_DRAW);
-            pboUnpackMem = (GLubyte *) glMapBufferARB_func(GL_PIXEL_UNPACK_BUFFER_ARB,
-                                       GL_WRITE_ONLY);
+            glGenBuffersARB(1, pb_unpack);
+            glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, pb_unpack[0]);
+            glBufferDataARB(GL_PIXEL_UNPACK_BUFFER_ARB, TEXSIZE * TEXSIZE, NULL,
+                            GL_STREAM_DRAW);
+            pboUnpackMem = (GLubyte *) glMapBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB,
+                                                      GL_WRITE_ONLY);
          }
          else {
             pboUnpackMem = bitmap;
@@ -505,26 +470,26 @@ bool PBOTest::testBitmap(void)
          glColor4f(1.0, 1.0, 1.0, 0.0);
          glRasterPos2f(0.0, 0.0);
          if (useUnpackBuffer) {
-            glUnmapBufferARB_func(GL_PIXEL_UNPACK_BUFFER_ARB);
+            glUnmapBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB);
             glBitmap(TEXSIZE, TEXSIZE, 0, 0, 0, 0, NULL);
-            glBindBufferARB_func(GL_PIXEL_UNPACK_BUFFER_ARB, 0);
+            glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, 0);
          }
          else
             glBitmap(TEXSIZE, TEXSIZE, 0, 0, 0, 0, pboUnpackMem);
 
          // Check the result
          if (usePackBuffer) {
-            glGenBuffersARB_func(1, pb_pack);
-            glBindBufferARB_func(GL_PIXEL_PACK_BUFFER_ARB, pb_pack[0]);
-            glBufferDataARB_func(GL_PIXEL_PACK_BUFFER_ARB,
+            glGenBuffersARB(1, pb_pack);
+            glBindBufferARB(GL_PIXEL_PACK_BUFFER_ARB, pb_pack[0]);
+            glBufferDataARB(GL_PIXEL_PACK_BUFFER_ARB,
                             windowSize * windowSize * 4 * sizeof(GLfloat),
                             NULL,
                             GL_STREAM_DRAW);
             glReadPixels(0, 0, windowSize, windowSize, GL_RGB, GL_FLOAT,
                          NULL);
             pboPackMem =
-               (GLfloat *) glMapBufferARB_func(GL_PIXEL_PACK_BUFFER_ARB,
-                                       GL_READ_ONLY);
+               (GLfloat *) glMapBufferARB(GL_PIXEL_PACK_BUFFER_ARB,
+                                          GL_READ_ONLY);
          }
          else {
             pboPackMem = buf;
@@ -568,14 +533,14 @@ bool PBOTest::testBitmap(void)
             }
          }
          if (usePackBuffer) {
-            glUnmapBuffer_func(GL_PIXEL_PACK_BUFFER_ARB);
-            glBindBuffer_func(GL_PIXEL_PACK_BUFFER_ARB, 0);
-            glDeleteBuffersARB_func(1, pb_pack);
+            glUnmapBuffer(GL_PIXEL_PACK_BUFFER_ARB);
+            glBindBuffer(GL_PIXEL_PACK_BUFFER_ARB, 0);
+            glDeleteBuffersARB(1, pb_pack);
          }
 
          if (useUnpackBuffer) {
-            glBindBuffer_func(GL_PIXEL_UNPACK_BUFFER_ARB, 0);
-            glDeleteBuffersARB_func(1, pb_unpack);
+            glBindBuffer(GL_PIXEL_UNPACK_BUFFER_ARB, 0);
+            glDeleteBuffersARB(1, pb_unpack);
          }
       }
    }
@@ -597,8 +562,8 @@ bool PBOTest::testTexImage(void)
    GLfloat black[3] = { 0.0, 0.0, 0.0 };
    GLfloat buf[windowSize * windowSize * 3];
 
-   glBindBufferARB_func(GL_PIXEL_UNPACK_BUFFER_ARB, 0);
-   glBindBufferARB_func(GL_PIXEL_PACK_BUFFER_ARB, 0);
+   glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, 0);
+   glBindBufferARB(GL_PIXEL_PACK_BUFFER_ARB, 0);
 
    glClearColor(0.0, 0.0, 0.0, 1.0);
    glClear(GL_COLOR_BUFFER_BIT);
@@ -613,11 +578,11 @@ bool PBOTest::testTexImage(void)
                  breakCOWTexture < useTexUnpackBuffer + 1;
                  breakCOWTexture++) {
                if (useTexUnpackBuffer) {
-                  glGenBuffersARB_func(1, unpack_pb);
-                  glBindBufferARB_func(GL_PIXEL_UNPACK_BUFFER_ARB, unpack_pb[0]);
-                  glBufferDataARB_func(GL_PIXEL_UNPACK_BUFFER_ARB,
-                               TEXSIZE * TEXSIZE * 3 * sizeof(GLfloat), NULL,
-                               GL_STREAM_DRAW);
+                  glGenBuffersARB(1, unpack_pb);
+                  glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, unpack_pb[0]);
+                  glBufferDataARB(GL_PIXEL_UNPACK_BUFFER_ARB,
+                                  TEXSIZE * TEXSIZE * 3 * sizeof(GLfloat), NULL,
+                                  GL_STREAM_DRAW);
                }
 
                glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
@@ -627,8 +592,8 @@ bool PBOTest::testTexImage(void)
 
                if (useTexUnpackBuffer) {
                   pboMem =
-                     (GLfloat *) glMapBufferARB_func(GL_PIXEL_UNPACK_BUFFER_ARB,
-                                             GL_WRITE_ONLY);
+                     (GLfloat *) glMapBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB,
+                                                GL_WRITE_ONLY);
                }
                else {
                   pboMem = t1;
@@ -641,10 +606,10 @@ bool PBOTest::testTexImage(void)
                }
 
                if (useTexUnpackBuffer) {
-                  glUnmapBufferARB_func(GL_PIXEL_UNPACK_BUFFER_ARB);
+                  glUnmapBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB);
                   glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, TEXSIZE, TEXSIZE, 0,
                                GL_RGB, GL_FLOAT, NULL);
-                  glBindBufferARB_func(GL_PIXEL_UNPACK_BUFFER_ARB, 0);
+                  glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, 0);
                }
                else
                   glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, TEXSIZE, TEXSIZE, 0,
@@ -652,14 +617,14 @@ bool PBOTest::testTexImage(void)
 
                if (useTexUnpackBuffer) {
                   if (breakCOWPBO) {
-                     glBindBufferARB_func(GL_PIXEL_UNPACK_BUFFER_ARB, unpack_pb[0]);
+                     glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, unpack_pb[0]);
                      pboMem =
-                        (GLfloat *) glMapBufferARB_func(GL_PIXEL_UNPACK_BUFFER_ARB,
-                                                GL_WRITE_ONLY);
+                        (GLfloat *) glMapBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB,
+                                                   GL_WRITE_ONLY);
                      for (i = 0; i < TEXSIZE * TEXSIZE * 3; i++)
                         pboMem[i] = 0.2;
-                     glUnmapBufferARB_func(GL_PIXEL_UNPACK_BUFFER_ARB);
-                     glBindBufferARB_func(GL_PIXEL_UNPACK_BUFFER_ARB, 0);
+                     glUnmapBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB);
+                     glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, 0);
                   }
                }
 
@@ -675,9 +640,9 @@ bool PBOTest::testTexImage(void)
 
                // Check PBO's content
                if (useTexUnpackBuffer) {
-                  glBindBufferARB_func(GL_PIXEL_UNPACK_BUFFER_ARB, unpack_pb[0]);
-                  pboMem = (GLfloat *) glMapBuffer_func(GL_PIXEL_UNPACK_BUFFER_ARB,
-                                             GL_READ_ONLY);
+                  glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, unpack_pb[0]);
+                  pboMem = (GLfloat *) glMapBuffer(GL_PIXEL_UNPACK_BUFFER_ARB,
+                                                   GL_READ_ONLY);
                   if (breakCOWPBO) {
                      for (i = 0; i < TEXSIZE * TEXSIZE * 3; i++)
                         if (fabsf(pboMem[i] - 0.2) > tolerance[0]) {
@@ -686,21 +651,21 @@ bool PBOTest::testTexImage(void)
                            return false;
                         }
                   }
-                  glUnmapBufferARB_func(GL_PIXEL_UNPACK_BUFFER_ARB);
-                  glBindBufferARB_func(GL_PIXEL_UNPACK_BUFFER_ARB, 0);
+                  glUnmapBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB);
+                  glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, 0);
                }
 
 
                // Read texture back
                if (useTexPackBuffer) {
-                  glGenBuffersARB_func(1, pack_pb);
-                  glBindBufferARB_func(GL_PIXEL_PACK_BUFFER_ARB, pack_pb[0]);
-                  glBufferDataARB_func(GL_PIXEL_PACK_BUFFER_ARB,
-                               TEXSIZE * TEXSIZE * 3 * sizeof(GLfloat), NULL,
-                               GL_STREAM_DRAW);
+                  glGenBuffersARB(1, pack_pb);
+                  glBindBufferARB(GL_PIXEL_PACK_BUFFER_ARB, pack_pb[0]);
+                  glBufferDataARB(GL_PIXEL_PACK_BUFFER_ARB,
+                                  TEXSIZE * TEXSIZE * 3 * sizeof(GLfloat), NULL,
+                                  GL_STREAM_DRAW);
                   glGetTexImage(GL_TEXTURE_2D, 0, GL_RGB, GL_FLOAT, NULL);
-                  pboMem = (GLfloat *) glMapBufferARB_func(GL_PIXEL_PACK_BUFFER_ARB,
-                                             GL_READ_ONLY);
+                  pboMem = (GLfloat *) glMapBufferARB(GL_PIXEL_PACK_BUFFER_ARB,
+                                                      GL_READ_ONLY);
                }
                else {
                   glGetTexImage(GL_TEXTURE_2D, 0, GL_RGB, GL_FLOAT, t2);
@@ -738,12 +703,12 @@ bool PBOTest::testTexImage(void)
                }
 
                if (useTexPackBuffer) {
-                  glUnmapBufferARB_func(GL_PIXEL_PACK_BUFFER_ARB);
-                  glBindBufferARB_func(GL_PIXEL_PACK_BUFFER_ARB, 0);
-                  glDeleteBuffersARB_func(1, pack_pb);
+                  glUnmapBufferARB(GL_PIXEL_PACK_BUFFER_ARB);
+                  glBindBufferARB(GL_PIXEL_PACK_BUFFER_ARB, 0);
+                  glDeleteBuffersARB(1, pack_pb);
                }
                if (useTexUnpackBuffer) {
-                  glDeleteBuffersARB_func(1, unpack_pb);
+                  glDeleteBuffersARB(1, unpack_pb);
                }
 
                glEnable(GL_TEXTURE_2D);
@@ -822,19 +787,19 @@ bool PBOTest::testTexSubImage(void)
    GLfloat green[3] = { 0.0, 1.0, 0.0 };
    GLfloat black[3] = { 0.0, 0.0, 0.0 };
 
-   glBindBufferARB_func(GL_PIXEL_UNPACK_BUFFER_ARB, 0);
-   glBindBufferARB_func(GL_PIXEL_PACK_BUFFER_ARB, 0);
+   glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, 0);
+   glBindBufferARB(GL_PIXEL_PACK_BUFFER_ARB, 0);
 
    for (useUnpackBuffer = 0; useUnpackBuffer < usePBO + 1; useUnpackBuffer++) {
       glClearColor(0.0, 0.0, 0.0, 1.0);
       glClear(GL_COLOR_BUFFER_BIT);
 
       if (useUnpackBuffer) {
-         glGenBuffersARB_func(1, pbs);
-         glBindBufferARB_func(GL_PIXEL_UNPACK_BUFFER_ARB, pbs[0]);
-         glBufferDataARB_func(GL_PIXEL_UNPACK_BUFFER_ARB, TEXSIZE * TEXSIZE * 3 * sizeof(GLfloat),
-                      NULL, GL_STREAM_DRAW);
-         glBindBufferARB_func(GL_PIXEL_UNPACK_BUFFER_ARB, 0);
+         glGenBuffersARB(1, pbs);
+         glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, pbs[0]);
+         glBufferDataARB(GL_PIXEL_UNPACK_BUFFER_ARB, TEXSIZE * TEXSIZE * 3 * sizeof(GLfloat),
+                         NULL, GL_STREAM_DRAW);
+         glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, 0);
       }
 
       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
@@ -844,9 +809,9 @@ bool PBOTest::testTexSubImage(void)
 
       GLfloat *pboMem = NULL;
       if (useUnpackBuffer) {
-         glBindBufferARB_func(GL_PIXEL_UNPACK_BUFFER_ARB, pbs[0]);
-         pboMem = (GLfloat *) glMapBufferARB_func(GL_PIXEL_UNPACK_BUFFER_ARB,
-                                    GL_WRITE_ONLY);
+         glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, pbs[0]);
+         pboMem = (GLfloat *) glMapBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB,
+                                             GL_WRITE_ONLY);
       }
       else {
          pboMem = t;
@@ -859,10 +824,10 @@ bool PBOTest::testTexSubImage(void)
       }
 
       if (useUnpackBuffer) {
-         glUnmapBufferARB_func(GL_PIXEL_UNPACK_BUFFER_ARB);
+         glUnmapBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB);
          glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, TEXSIZE, TEXSIZE, GL_RGB,
                          GL_FLOAT, NULL);
-         glBindBufferARB_func(GL_PIXEL_UNPACK_BUFFER_ARB, 0);
+         glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, 0);
       }
       else
          glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, TEXSIZE, TEXSIZE, GL_RGB,
@@ -931,8 +896,8 @@ bool PBOTest::testPolygonStip(void)
    GLfloat white[3] = { 1.0, 1.0, 1.0 };
    GLfloat black[3] = { 0.0, 0.0, 0.0 };
 
-   glBindBufferARB_func(GL_PIXEL_UNPACK_BUFFER_ARB, 0);
-   glBindBufferARB_func(GL_PIXEL_PACK_BUFFER_ARB, 0);
+   glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, 0);
+   glBindBufferARB(GL_PIXEL_PACK_BUFFER_ARB, 0);
 
    for (useUnpackBuffer = 0; useUnpackBuffer < usePBO + 1; useUnpackBuffer++) {
       for (usePackBuffer = 0; usePackBuffer < usePBO + 1; usePackBuffer++) {
@@ -940,12 +905,12 @@ bool PBOTest::testPolygonStip(void)
          glClear(GL_COLOR_BUFFER_BIT);
 
          if (useUnpackBuffer) {
-            glGenBuffersARB_func(1, unpack_pb);
-            glBindBufferARB_func(GL_PIXEL_UNPACK_BUFFER_ARB, unpack_pb[0]);
-            glBufferDataARB_func(GL_PIXEL_UNPACK_BUFFER_ARB, 32 * 32 / 8, NULL,
-                         GL_STREAM_DRAW);
-            pboMem = (GLubyte *) glMapBufferARB_func(GL_PIXEL_UNPACK_BUFFER_ARB,
-                                       GL_WRITE_ONLY);
+            glGenBuffersARB(1, unpack_pb);
+            glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, unpack_pb[0]);
+            glBufferDataARB(GL_PIXEL_UNPACK_BUFFER_ARB, 32 * 32 / 8, NULL,
+                            GL_STREAM_DRAW);
+            pboMem = (GLubyte *) glMapBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB,
+                                                GL_WRITE_ONLY);
          }
          else {
             pboMem = t1;
@@ -958,7 +923,7 @@ bool PBOTest::testPolygonStip(void)
          }
 
          if (useUnpackBuffer) {
-            glUnmapBufferARB_func(GL_PIXEL_UNPACK_BUFFER_ARB);
+            glUnmapBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB);
             glPolygonStipple(NULL);
          }
          else {
@@ -967,13 +932,13 @@ bool PBOTest::testPolygonStip(void)
 
          // Read back the stipple pattern
          if (usePackBuffer) {
-            glGenBuffersARB_func(1, pack_pb);
-            glBindBufferARB_func(GL_PIXEL_PACK_BUFFER_ARB, pack_pb[0]);
-            glBufferDataARB_func(GL_PIXEL_PACK_BUFFER_ARB, 32 * 32 / 8, NULL,
-                         GL_STREAM_DRAW);
+            glGenBuffersARB(1, pack_pb);
+            glBindBufferARB(GL_PIXEL_PACK_BUFFER_ARB, pack_pb[0]);
+            glBufferDataARB(GL_PIXEL_PACK_BUFFER_ARB, 32 * 32 / 8, NULL,
+                            GL_STREAM_DRAW);
             glGetPolygonStipple(NULL);
-            pboMem = (GLubyte *) glMapBufferARB_func(GL_PIXEL_PACK_BUFFER_ARB,
-                                       GL_READ_ONLY);
+            pboMem = (GLubyte *) glMapBufferARB(GL_PIXEL_PACK_BUFFER_ARB,
+                                                GL_READ_ONLY);
          }
          else {
             glGetPolygonStipple(t2);
@@ -989,12 +954,12 @@ bool PBOTest::testPolygonStip(void)
 
 
          if (useUnpackBuffer) {
-            glBindBufferARB_func(GL_PIXEL_UNPACK_BUFFER_ARB, 0);
-            glDeleteBuffersARB_func(1, unpack_pb);
+            glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, 0);
+            glDeleteBuffersARB(1, unpack_pb);
          }
          if (usePackBuffer) {
-            glBindBufferARB_func(GL_PIXEL_PACK_BUFFER_ARB, 0);
-            glDeleteBuffersARB_func(1, pack_pb);
+            glBindBufferARB(GL_PIXEL_PACK_BUFFER_ARB, 0);
+            glDeleteBuffersARB(1, pack_pb);
          }
 
          glEnable(GL_POLYGON_STIPPLE);
@@ -1057,33 +1022,33 @@ bool PBOTest::testErrorHandling(void)
 {
    GLuint fbs[1];
 
-   glBindBufferARB_func(GL_PIXEL_UNPACK_BUFFER_ARB, 0);
-   glBindBufferARB_func(GL_PIXEL_PACK_BUFFER_ARB, 0);
+   glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, 0);
+   glBindBufferARB(GL_PIXEL_PACK_BUFFER_ARB, 0);
 
    if (usePBO) {
       /* test that glDrawPixels from too small of buffer raises error */
-      glGenBuffersARB_func(1, fbs);
-      glBindBufferARB_func(GL_PIXEL_UNPACK_BUFFER, fbs[0]);
-      glBufferDataARB_func(GL_PIXEL_UNPACK_BUFFER_ARB, 32 * 32 * 4, NULL,
-                   GL_STREAM_DRAW);
+      glGenBuffersARB(1, fbs);
+      glBindBufferARB(GL_PIXEL_UNPACK_BUFFER, fbs[0]);
+      glBufferDataARB(GL_PIXEL_UNPACK_BUFFER_ARB, 32 * 32 * 4, NULL,
+                      GL_STREAM_DRAW);
       glDrawPixels(32, 32 + 1, GL_BGRA, GL_UNSIGNED_BYTE, NULL);
       if (glGetError() != GL_INVALID_OPERATION)
          return false;
 
-      glDeleteBuffersARB_func(1, fbs);
-      glBindBufferARB_func(GL_PIXEL_UNPACK_BUFFER, 0);
+      glDeleteBuffersARB(1, fbs);
+      glBindBufferARB(GL_PIXEL_UNPACK_BUFFER, 0);
 
       /* test that glReadPixels into too small of buffer raises error */
-      glGenBuffersARB_func(1, fbs);
-      glBindBufferARB_func(GL_PIXEL_PACK_BUFFER, fbs[0]);
-      glBufferDataARB_func(GL_PIXEL_PACK_BUFFER_ARB, 32 * 32 * 4, NULL,
-                   GL_STREAM_DRAW);
+      glGenBuffersARB(1, fbs);
+      glBindBufferARB(GL_PIXEL_PACK_BUFFER, fbs[0]);
+      glBufferDataARB(GL_PIXEL_PACK_BUFFER_ARB, 32 * 32 * 4, NULL,
+                      GL_STREAM_DRAW);
       glReadPixels(0, 0, 32, 32 + 1, GL_BGRA, GL_UNSIGNED_BYTE, NULL);
       if (glGetError() != GL_INVALID_OPERATION)
          return false;
 
-      glDeleteBuffersARB_func(1, fbs);
-      glBindBufferARB_func(GL_PIXEL_PACK_BUFFER, 0);
+      glDeleteBuffersARB(1, fbs);
+      glBindBufferARB(GL_PIXEL_PACK_BUFFER, 0);
    }
    return true;
 }
diff --git a/tests/glean/tpointatten.cpp b/tests/glean/tpointatten.cpp
index 0dee922..49d9dac 100644
--- a/tests/glean/tpointatten.cpp
+++ b/tests/glean/tpointatten.cpp
@@ -44,21 +44,9 @@ namespace GLEAN {
 /* Clamp X to [MIN,MAX] */
 #define CLAMP( X, MIN, MAX )  ( (X)<(MIN) ? (MIN) : ((X)>(MAX) ? (MAX) : (X)) )
 
-
-static PFNGLPOINTPARAMETERFVARBPROC PointParameterfvARB = NULL;
-static PFNGLPOINTPARAMETERFARBPROC PointParameterfARB = NULL;
-
-
 void
 PointAttenuationTest::setup(void)
 {
-	PointParameterfvARB = (PFNGLPOINTPARAMETERFVARBPROC)
-		GLUtils::getProcAddress("glPointParameterfvARB");
-	assert(PointParameterfvARB);
-	PointParameterfARB = (PFNGLPOINTPARAMETERFARBPROC)
-		GLUtils::getProcAddress("glPointParameterfARB");
-	assert(PointParameterfARB);
-
 	glGetFloatv(GL_ALIASED_POINT_SIZE_RANGE, aliasedLimits);
 	glGetFloatv(GL_SMOOTH_POINT_SIZE_RANGE, smoothLimits);
 	glMatrixMode(GL_PROJECTION);
@@ -198,11 +186,11 @@ PointAttenuationTest::testPointRendering(GLboolean smooth)
 			atten[1] = (b == -1) ? 0.0 : pow(10.0, -b);
 			for (int c = -2; c < 3; c++) {
 				atten[2] = (c == -1) ? 0.0 : pow(10.0, -c);
-				PointParameterfvARB(GL_POINT_DISTANCE_ATTENUATION_ARB, atten);
+				glPointParameterfvARB(GL_POINT_DISTANCE_ATTENUATION_ARB, atten);
 				for (float min = 1.0; min < MAX_SIZE; min += 10) {
-					PointParameterfARB(GL_POINT_SIZE_MIN_ARB, min);
+					glPointParameterfARB(GL_POINT_SIZE_MIN_ARB, min);
 					for (float max = min; max < MAX_SIZE; max += 10) {
-						PointParameterfARB(GL_POINT_SIZE_MAX_ARB, max);
+						glPointParameterfARB(GL_POINT_SIZE_MAX_ARB, max);
 						for (float size = 1.0; size < MAX_SIZE; size += 8) {
 							glPointSize(size);
 
diff --git a/tests/glean/tpointsprite.cpp b/tests/glean/tpointsprite.cpp
index 155b416..774c0cb 100644
--- a/tests/glean/tpointsprite.cpp
+++ b/tests/glean/tpointsprite.cpp
@@ -50,8 +50,6 @@
 
 namespace GLEAN {
 
-static PFNGLPOINTPARAMETERIPROC glPointParameteri_func = NULL;
-
 //background color
 static GLfloat   bgColor[4] = {0.0, 0.0, 0.0, 0.0};
 
@@ -350,12 +348,6 @@ PointSpriteTest::runOne(MultiTestResult &r, Window &w)
 	(void) w;
 
 	have_2_0 = (strtod((const char *) glGetString(GL_VERSION), NULL) > 2.0);
-	if (have_2_0) {
-		glPointParameteri_func = (PFNGLPOINTPARAMETERIPROC)
-			GLUtils::getProcAddress("glPointParameteri");
-
-		assert(glPointParameteri_func);
-	}
 
 	CheckDefaultState(r);
 	
@@ -399,8 +391,8 @@ PointSpriteTest::runOne(MultiTestResult &r, Window &w)
 		for (coordOrigin = 0; coordOrigin < numOrigin; coordOrigin++)
 		{
 			if (have_2_0) {
-				glPointParameteri_func(GL_POINT_SPRITE_COORD_ORIGIN,
-						       origin[coordOrigin]);
+				glPointParameteri(GL_POINT_SPRITE_COORD_ORIGIN,
+						  origin[coordOrigin]);
 			}
 
 			pointSize = 1.85;
diff --git a/tests/glean/tshaderapi.cpp b/tests/glean/tshaderapi.cpp
index fcd6547..64db544 100644
--- a/tests/glean/tshaderapi.cpp
+++ b/tests/glean/tshaderapi.cpp
@@ -39,110 +39,11 @@
 
 namespace GLEAN {
 
-static PFNGLATTACHSHADERPROC glAttachShader_func = NULL;
-static PFNGLBINDATTRIBLOCATIONPROC glBindAttribLocation_func = NULL;
-static PFNGLCOMPILESHADERPROC glCompileShader_func = NULL;
-static PFNGLCREATEPROGRAMPROC glCreateProgram_func = NULL;
-static PFNGLCREATESHADERPROC glCreateShader_func = NULL;
-static PFNGLDELETEPROGRAMPROC glDeleteProgram_func = NULL;
-static PFNGLDELETESHADERPROC glDeleteShader_func = NULL;
-static PFNGLDETACHSHADERPROC glDetachShader_func = NULL;
-static PFNGLDISABLEVERTEXATTRIBARRAYPROC glDisableVertexAttribArray_func = NULL;
-static PFNGLENABLEVERTEXATTRIBARRAYPROC glEnableVertexAttribArray_func = NULL;
-static PFNGLGETACTIVEATTRIBPROC glGetActiveAttrib_func = NULL;
-static PFNGLGETACTIVEUNIFORMPROC glGetActiveUniform_func = NULL;
-static PFNGLGETATTACHEDSHADERSPROC glGetAttachedShaders_func = NULL;
-static PFNGLGETATTRIBLOCATIONPROC glGetAttribLocation_func = NULL;
-static PFNGLGETPROGRAMIVPROC glGetProgramiv_func = NULL;
-static PFNGLGETPROGRAMINFOLOGPROC glGetProgramInfoLog_func = NULL;
-static PFNGLGETSHADERIVPROC glGetShaderiv_func = NULL;
-static PFNGLGETSHADERINFOLOGPROC glGetShaderInfoLog_func = NULL;
-static PFNGLGETSHADERSOURCEPROC glGetShaderSource_func = NULL;
-static PFNGLGETUNIFORMLOCATIONPROC glGetUniformLocation_func = NULL;
-static PFNGLGETUNIFORMFVPROC glGetUniformfv_func = NULL;
-static PFNGLGETUNIFORMIVPROC glGetUniformiv_func = NULL;
-static PFNGLLINKPROGRAMPROC glLinkProgram_func = NULL;
-static PFNGLSHADERSOURCEPROC glShaderSource_func = NULL;
-static PFNGLUSEPROGRAMPROC glUseProgram_func = NULL;
-static PFNGLUNIFORM1FPROC glUniform1f_func = NULL;
-static PFNGLUNIFORM2FPROC glUniform2f_func = NULL;
-static PFNGLUNIFORM3FPROC glUniform3f_func = NULL;
-static PFNGLUNIFORM4FPROC glUniform4f_func = NULL;
-static PFNGLUNIFORM1IPROC glUniform1i_func = NULL;
-static PFNGLUNIFORM2IPROC glUniform2i_func = NULL;
-static PFNGLUNIFORM3IPROC glUniform3i_func = NULL;
-static PFNGLUNIFORM4IPROC glUniform4i_func = NULL;
-static PFNGLUNIFORM1FVPROC glUniform1fv_func = NULL;
-static PFNGLUNIFORM2FVPROC glUniform2fv_func = NULL;
-static PFNGLUNIFORM3FVPROC glUniform3fv_func = NULL;
-static PFNGLUNIFORM4FVPROC glUniform4fv_func = NULL;
-static PFNGLUNIFORM1IVPROC glUniform1iv_func = NULL;
-static PFNGLUNIFORM2IVPROC glUniform2iv_func = NULL;
-static PFNGLUNIFORM3IVPROC glUniform3iv_func = NULL;
-static PFNGLUNIFORM4IVPROC glUniform4iv_func = NULL;
-static PFNGLUNIFORMMATRIX2FVPROC glUniformMatrix2fv_func = NULL;
-static PFNGLUNIFORMMATRIX3FVPROC glUniformMatrix3fv_func = NULL;
-static PFNGLUNIFORMMATRIX4FVPROC glUniformMatrix4fv_func = NULL;
-static PFNGLVALIDATEPROGRAMPROC glValidateProgram_func = NULL;
-
-
 ShaderAPIResult::ShaderAPIResult()
 {
 	pass = false;
 }
 
-
-void
-ShaderAPITest::get_ext_procs(void)
-{
-	glAttachShader_func = (PFNGLATTACHSHADERPROC) GLUtils::getProcAddress("glAttachShader");
-	glBindAttribLocation_func = (PFNGLBINDATTRIBLOCATIONPROC) GLUtils::getProcAddress("glBindAttribLocation");
-	glCompileShader_func = (PFNGLCOMPILESHADERPROC) GLUtils::getProcAddress("glCompileShader");
-	glCreateProgram_func = (PFNGLCREATEPROGRAMPROC) GLUtils::getProcAddress("glCreateProgram");
-	glCreateShader_func = (PFNGLCREATESHADERPROC) GLUtils::getProcAddress("glCreateShader");
-	glDeleteProgram_func = (PFNGLDELETEPROGRAMPROC) GLUtils::getProcAddress("glDeleteProgram");
-	glDeleteShader_func = (PFNGLDELETESHADERPROC) GLUtils::getProcAddress("glDeleteShader");
-	glDetachShader_func = (PFNGLDETACHSHADERPROC) GLUtils::getProcAddress("glDetachShader");
-	glDisableVertexAttribArray_func = (PFNGLDISABLEVERTEXATTRIBARRAYPROC) GLUtils::getProcAddress("glDisableVertexAttribArray");
-	glEnableVertexAttribArray_func = (PFNGLENABLEVERTEXATTRIBARRAYPROC) GLUtils::getProcAddress("glEnableVertexAttribArray");
-	glGetActiveAttrib_func = (PFNGLGETACTIVEATTRIBPROC) GLUtils::getProcAddress("glGetActiveAttrib");
-	glGetActiveUniform_func = (PFNGLGETACTIVEUNIFORMPROC) GLUtils::getProcAddress("glGetActiveUniform");
-	glGetAttachedShaders_func = (PFNGLGETATTACHEDSHADERSPROC) GLUtils::getProcAddress("glGetAttachedShaders");
-	glGetAttribLocation_func = (PFNGLGETATTRIBLOCATIONPROC) GLUtils::getProcAddress("glGetAttribLocation");
-	glGetProgramiv_func = (PFNGLGETPROGRAMIVPROC) GLUtils::getProcAddress("glGetProgramiv");
-	glGetProgramInfoLog_func = (PFNGLGETPROGRAMINFOLOGPROC) GLUtils::getProcAddress("glGetProgramInfoLog");
-	glGetShaderiv_func = (PFNGLGETSHADERIVPROC) GLUtils::getProcAddress("glGetShaderiv");
-	glGetShaderInfoLog_func = (PFNGLGETSHADERINFOLOGPROC) GLUtils::getProcAddress("glGetShaderInfoLog");
-	glGetShaderSource_func = (PFNGLGETSHADERSOURCEPROC) GLUtils::getProcAddress("glGetShaderSource");
-	glGetUniformLocation_func = (PFNGLGETUNIFORMLOCATIONPROC) GLUtils::getProcAddress("glGetUniformLocation");
-	glGetUniformfv_func = (PFNGLGETUNIFORMFVPROC) GLUtils::getProcAddress("glGetUniformfv");
-	glGetUniformiv_func = (PFNGLGETUNIFORMIVPROC) GLUtils::getProcAddress("glGetUniformiv");
-	glLinkProgram_func = (PFNGLLINKPROGRAMPROC) GLUtils::getProcAddress("glLinkProgram");
-	glShaderSource_func = (PFNGLSHADERSOURCEPROC) GLUtils::getProcAddress("glShaderSource");
-	glUseProgram_func = (PFNGLUSEPROGRAMPROC) GLUtils::getProcAddress("glUseProgram");
-	glUniform1f_func = (PFNGLUNIFORM1FPROC) GLUtils::getProcAddress("glUniform1f");
-	glUniform2f_func = (PFNGLUNIFORM2FPROC) GLUtils::getProcAddress("glUniform2f");
-	glUniform3f_func = (PFNGLUNIFORM3FPROC) GLUtils::getProcAddress("glUniform3f");
-	glUniform4f_func = (PFNGLUNIFORM4FPROC) GLUtils::getProcAddress("glUniform4f");
-	glUniform1i_func = (PFNGLUNIFORM1IPROC) GLUtils::getProcAddress("glUniform1i");
-	glUniform2i_func = (PFNGLUNIFORM2IPROC) GLUtils::getProcAddress("glUniform2i");
-	glUniform3i_func = (PFNGLUNIFORM3IPROC) GLUtils::getProcAddress("glUniform3i");
-	glUniform4i_func = (PFNGLUNIFORM4IPROC) GLUtils::getProcAddress("glUniform4i");
-	glUniform1fv_func = (PFNGLUNIFORM1FVPROC) GLUtils::getProcAddress("glUniform1fv");
-	glUniform2fv_func = (PFNGLUNIFORM2FVPROC) GLUtils::getProcAddress("glUniform2fv");
-	glUniform3fv_func = (PFNGLUNIFORM3FVPROC) GLUtils::getProcAddress("glUniform3fv");
-	glUniform4fv_func = (PFNGLUNIFORM4FVPROC) GLUtils::getProcAddress("glUniform4fv");
-	glUniform1iv_func = (PFNGLUNIFORM1IVPROC) GLUtils::getProcAddress("glUniform1iv");
-	glUniform2iv_func = (PFNGLUNIFORM2IVPROC) GLUtils::getProcAddress("glUniform2iv");
-	glUniform3iv_func = (PFNGLUNIFORM3IVPROC) GLUtils::getProcAddress("glUniform3iv");
-	glUniform4iv_func = (PFNGLUNIFORM4IVPROC) GLUtils::getProcAddress("glUniform4iv");
-	glUniformMatrix2fv_func = (PFNGLUNIFORMMATRIX2FVPROC) GLUtils::getProcAddress("glUniformMatrix2fv");
-	glUniformMatrix3fv_func = (PFNGLUNIFORMMATRIX3FVPROC) GLUtils::getProcAddress("glUniformMatrix3fv");
-	glUniformMatrix4fv_func = (PFNGLUNIFORMMATRIX4FVPROC) GLUtils::getProcAddress("glUniformMatrix4fv");
-	glValidateProgram_func = (PFNGLVALIDATEPROGRAMPROC) GLUtils::getProcAddress("glValidateProgram");
-}
-
-
 void
 ShaderAPITest::assert_test(const char *file, int line, int cond, const char *msg)
 {
@@ -214,16 +115,16 @@ ShaderAPITest::check_status(GLuint id, GLenum pname,
 void
 ShaderAPITest::check_compile_status(GLuint id)
 {
-	check_status(id, GL_COMPILE_STATUS, glGetShaderiv_func,
-		     glGetShaderInfoLog_func);
+	check_status(id, GL_COMPILE_STATUS, glGetShaderiv,
+		     glGetShaderInfoLog);
 }
 
 
 void
 ShaderAPITest::check_link_status(GLuint id)
 {
-	check_status(id, GL_LINK_STATUS, glGetProgramiv_func,
-		     glGetProgramInfoLog_func);
+	check_status(id, GL_LINK_STATUS, glGetProgramiv,
+		     glGetProgramInfoLog);
 }
 
 
@@ -233,9 +134,9 @@ ShaderAPITest::make_shader(GLenum type, const char *src)
 	GLuint id;
 
 	assert_no_error();
-	id = glCreateShader_func(type);
-	glShaderSource_func(id, 1, &src, NULL);
-	glCompileShader_func(id);
+	id = glCreateShader(type);
+	glShaderSource(id, 1, &src, NULL);
+	glCompileShader(id);
 	check_compile_status(id);
 	assert_no_error();
 	return id;
@@ -248,21 +149,21 @@ ShaderAPITest::make_program(const char *vs_src, const char *fs_src)
 	GLuint id, vs, fs;
 
 	assert_no_error();
-	id = glCreateProgram_func();
+	id = glCreateProgram();
 	if (vs_src) {
 		vs = make_shader(GL_VERTEX_SHADER, vs_src);
-		glAttachShader_func(id, vs);
-		glDeleteShader_func(vs);
+		glAttachShader(id, vs);
+		glDeleteShader(vs);
 	}
 	if (fs_src) {
 		fs = make_shader(GL_FRAGMENT_SHADER, fs_src);
-		glAttachShader_func(id, fs);
-		glDeleteShader_func(fs);
+		glAttachShader(id, fs);
+		glDeleteShader(fs);
 	}
-	glLinkProgram_func(id);
+	glLinkProgram(id);
 	check_link_status(id);
-	glUseProgram_func(id);
-	glDeleteProgram_func(id);
+	glUseProgram(id);
+	glDeleteProgram(id);
 	assert_no_error();
 	return id;
 }
@@ -281,12 +182,12 @@ ShaderAPITest::test_uniform_size_type1(const char *glslType, GLenum glType, cons
 			glslType, el);
 	
 	program = make_program(buffer, NULL);
-	glGetProgramiv_func(program, GL_ACTIVE_UNIFORMS, &active);
+	glGetProgramiv(program, GL_ACTIVE_UNIFORMS, &active);
 	assert_no_error();
 	for (i = 0; i < active; i++) {
 		GLint size = -1;
 		GLenum type = 0;
-		glGetActiveUniform_func(program, i, sizeof(buffer), NULL,
+		glGetActiveUniform(program, i, sizeof(buffer), NULL,
 								&size, &type, buffer);
 		assert_no_error();
 		assert(type == glType);
@@ -340,12 +241,12 @@ ShaderAPITest::test_attrib_size_type1(const char *glslType, GLenum glType, const
 			glslType, el);
 
 	program = make_program(buffer, NULL);
-	glGetProgramiv_func(program, GL_ACTIVE_ATTRIBUTES, &active);
+	glGetProgramiv(program, GL_ACTIVE_ATTRIBUTES, &active);
 	assert_no_error();
 	for (i = 0; i < active; i++) {
 		GLint size = -1;
 		GLenum type = 0;
-		glGetActiveAttrib_func(program, i, sizeof(buffer), NULL,
+		glGetActiveAttrib(program, i, sizeof(buffer), NULL,
 							   &size, &type, buffer);
 		assert_no_error();
 		assert(type == glType);
@@ -384,9 +285,9 @@ ShaderAPITest::test_uniform_array_overflow(void)
 	GLfloat data[128];
 
 	program = make_program("#version 120\nuniform vec2 x[10];\nvoid main() { gl_Position.xy = x[9]; }\n", NULL);
-	location = glGetUniformLocation_func(program, "x");
+	location = glGetUniformLocation(program, "x");
 	assert_no_error();
-	glUniform2fv_func(location, 64, data);
+	glUniform2fv(location, 64, data);
 	assert_no_error();
 }
 
@@ -399,9 +300,9 @@ ShaderAPITest::test_uniform_scalar_count(void)
 	GLfloat data[128];
 
 	program = make_program("#version 110\nuniform vec2 x;\nvoid main() { gl_Position.xy = x; }\n", NULL);
-	location = glGetUniformLocation_func(program, "x");
+	location = glGetUniformLocation(program, "x");
 	assert_no_error();
-	glUniform2fv_func(location, 64, data);
+	glUniform2fv(location, 64, data);
 	assert_error(GL_INVALID_OPERATION);
 }
 
@@ -415,16 +316,16 @@ ShaderAPITest::test_uniform_query_matrix(void)
 	GLint location;
 
 	program = make_program("#version 110\nuniform mat3 m[2];\nvoid main() { gl_Position.xyz = m[1][2]; }\n", NULL);
-	location = glGetUniformLocation_func(program, "m");
+	location = glGetUniformLocation(program, "m");
 	for (i = 0; i < 9; i++)
 		data[i] = i;
 	for (i = 9; i < 18; i++)
 		data[i] = 321.0;
-	glUniformMatrix3fv_func(location, 1, GL_TRUE, data);
+	glUniformMatrix3fv(location, 1, GL_TRUE, data);
 
 	for (i = 0; i < 18; i++)
 		data[i] = 123.0;
-	glGetUniformfv_func(program, location, data);
+	glGetUniformfv(program, location, data);
 	for (c = 0; c < 3; c++)
 		for (r = 0; r < 3; r++)
 			assert(data[c * 3 + r] == r * 3 + c);
@@ -442,13 +343,13 @@ ShaderAPITest::test_uniform_neg_location(void)
 	program = make_program("#version 110\nvoid main() { gl_Position = vec4(1.0, 1.0, 1.0, 1.0); }\n", NULL);
 	(void) program;
 	assert_no_error();
-	glUniform1i_func(-1, 1);
+	glUniform1i(-1, 1);
 	assert_no_error();
-	glUniform1i_func(-200, 1);
+	glUniform1i(-200, 1);
 	assert_error(GL_INVALID_OPERATION);
-	glUniformMatrix2fv_func(-1, 1, GL_FALSE, data);
+	glUniformMatrix2fv(-1, 1, GL_FALSE, data);
 	assert_no_error();
-	glUniformMatrix2fv_func(-200, 1, GL_FALSE, data);
+	glUniformMatrix2fv(-200, 1, GL_FALSE, data);
 	assert_error(GL_INVALID_OPERATION);
 }
 
@@ -462,12 +363,12 @@ ShaderAPITest::test_uniform_bool_conversion(void)
 
 	assert_no_error();
 	program = make_program("uniform bool b;\nvoid main() { gl_Position.x = b ? 1.5 : 0.5; }\n", NULL);
-	location = glGetUniformLocation_func(program, "b");
+	location = glGetUniformLocation(program, "b");
 	assert(location != -1);
 	assert_no_error();
-	glUniform1i_func(location, 5);
+	glUniform1i(location, 5);
 	assert_no_error();
-	glGetUniformiv_func(program, location, &value[0]);
+	glGetUniformiv(program, location, &value[0]);
 	assert_no_error();
 	assert(value[0] == 1);
 }
@@ -482,10 +383,10 @@ ShaderAPITest::test_uniform_multiple_samplers(void)
 
    assert_no_error();
    program = make_program(NULL, "uniform sampler2D s[2];\nvoid main() { gl_FragColor = texture2D(s[1], vec2(0.0, 0.0)); }\n");
-   location = glGetUniformLocation_func(program, "s[0]");
+   location = glGetUniformLocation(program, "s[0]");
    assert(location != -1);
    assert_no_error();
-   glUniform1iv_func(location, 2, values);
+   glUniform1iv(location, 2, values);
    assert_no_error();
 }
 
@@ -512,8 +413,6 @@ ShaderAPITest::runOne(ShaderAPIResult &r, Window &w)
 	// error will be set to true if any of the assert functions below fail.
 	error = false;
 
-	get_ext_procs();
-
 	run_tests();
 
 	r.pass = !error;
diff --git a/tests/glean/tshaderapi.h b/tests/glean/tshaderapi.h
index 11ccc2f..876876a 100644
--- a/tests/glean/tshaderapi.h
+++ b/tests/glean/tshaderapi.h
@@ -90,8 +90,6 @@ private:
 	void test_uniform_bool_conversion(void);
 	void test_uniform_multiple_samplers(void);
 	void run_tests(void);
-
-	void get_ext_procs(void);
 };
 
 } // namespace GLEAN
diff --git a/tests/glean/tstencil2.cpp b/tests/glean/tstencil2.cpp
index 2d3b294..aaf978f 100644
--- a/tests/glean/tstencil2.cpp
+++ b/tests/glean/tstencil2.cpp
@@ -46,19 +46,6 @@
 
 namespace GLEAN {
 
-// ATI
-static PFNGLSTENCILOPSEPARATEATIPROC glStencilOpSeparateATI_func;
-static PFNGLSTENCILFUNCSEPARATEATIPROC glStencilFuncSeparateATI_func;
-
-// EXT
-static PFNGLACTIVESTENCILFACEEXTPROC glActiveStencilFaceEXT_func;
-
-// GL2
-static PFNGLSTENCILOPSEPARATEPROC glStencilOpSeparate_func;
-static PFNGLSTENCILFUNCSEPARATEPROC glStencilFuncSeparate_func;
-static PFNGLSTENCILMASKSEPARATEPROC glStencilMaskSeparate_func;
-
-
 // two-sided methods:
 #define ATI 1
 #define EXT 2
@@ -71,33 +58,6 @@ Stencil2Result::Stencil2Result()
 }
 
 
-void
-Stencil2Test::get_ext_functions(void)
-{
-	if (have_ATI_separate_stencil()) {
-		glStencilOpSeparateATI_func = (PFNGLSTENCILOPSEPARATEATIPROC)
-			GLUtils::getProcAddress("glStencilOpSeparateATI");
-		glStencilFuncSeparateATI_func = (PFNGLSTENCILFUNCSEPARATEATIPROC)
-			GLUtils::getProcAddress("glStencilFuncSeparateATI");
-	}
-
-	if (have_EXT_stencil_two_side()) {
-		glActiveStencilFaceEXT_func = (PFNGLACTIVESTENCILFACEEXTPROC)
-			GLUtils::getProcAddress("glActiveStencilFaceEXT");
-	}
-
-	// GL2
-	glStencilOpSeparate_func = (PFNGLSTENCILOPSEPARATEPROC)
-		GLUtils::getProcAddress("glStencilOpSeparate");
-
-	glStencilFuncSeparate_func = (PFNGLSTENCILFUNCSEPARATEPROC)
-		GLUtils::getProcAddress("glStencilFuncSeparate");
-
-	glStencilMaskSeparate_func= (PFNGLSTENCILMASKSEPARATEPROC)
-		GLUtils::getProcAddress("glStencilMaskSeparate");
-}
-
-
 bool
 Stencil2Test::have_ATI_separate_stencil(void) const
 {
@@ -312,17 +272,17 @@ Stencil2Test::set_stencil_state(int method,
 		assert(frontWriteMask == backWriteMask);
 
 		// set state
-		glStencilOpSeparateATI_func(GL_FRONT,
-					    frontStencilFail,
-					    frontZFail,
-					    frontZPass);
+		glStencilOpSeparateATI(GL_FRONT,
+				       frontStencilFail,
+				       frontZFail,
+				       frontZPass);
 
-		glStencilOpSeparateATI_func(GL_BACK,
-					    backStencilFail,
-					    backZFail,
-					    backZPass);
+		glStencilOpSeparateATI(GL_BACK,
+				       backStencilFail,
+				       backZFail,
+				       backZPass);
 
-		glStencilFuncSeparateATI_func(frontFunc, backFunc, frontRef, frontMask);
+		glStencilFuncSeparateATI(frontFunc, backFunc, frontRef, frontMask);
 
 		glStencilMask(frontWriteMask);
 
@@ -349,18 +309,18 @@ Stencil2Test::set_stencil_state(int method,
 		// set state
 		glEnable(GL_STENCIL_TEST_TWO_SIDE_EXT);
 
-		glActiveStencilFaceEXT_func(GL_FRONT);
+		glActiveStencilFaceEXT(GL_FRONT);
 		glStencilOp(frontStencilFail, frontZFail, frontZPass);
 		glStencilFunc(frontFunc, frontRef, frontMask);
 		glStencilMask(frontWriteMask);
 
-		glActiveStencilFaceEXT_func(GL_BACK);
+		glActiveStencilFaceEXT(GL_BACK);
 		glStencilOp(backStencilFail, backZFail, backZPass);
 		glStencilFunc(backFunc, backRef, backMask);
 		glStencilMask(backWriteMask);
 
 		// get state
-		glActiveStencilFaceEXT_func(GL_FRONT);
+		glActiveStencilFaceEXT(GL_FRONT);
 		glGetIntegerv(GL_STENCIL_FAIL, &get_frontStencilFail);
 		glGetIntegerv(GL_STENCIL_PASS_DEPTH_FAIL, &get_frontZFail);
 		glGetIntegerv(GL_STENCIL_PASS_DEPTH_PASS, &get_frontZPass);
@@ -368,7 +328,7 @@ Stencil2Test::set_stencil_state(int method,
 		glGetIntegerv(GL_STENCIL_REF, &get_frontRef);
 		glGetIntegerv(GL_STENCIL_VALUE_MASK, &get_frontMask);
 		glGetIntegerv(GL_STENCIL_WRITEMASK, &get_frontWriteMask);
-		glActiveStencilFaceEXT_func(GL_BACK);
+		glActiveStencilFaceEXT(GL_BACK);
 		glGetIntegerv(GL_STENCIL_FAIL, &get_backStencilFail);
 		glGetIntegerv(GL_STENCIL_PASS_DEPTH_FAIL, &get_backZFail);
 		glGetIntegerv(GL_STENCIL_PASS_DEPTH_PASS, &get_backZPass);
@@ -381,18 +341,18 @@ Stencil2Test::set_stencil_state(int method,
 
 	case GL2:
 		// set state
-		glStencilOpSeparate_func(GL_FRONT,
-					 frontStencilFail,
-					 frontZFail,
-					 frontZPass);
-		glStencilOpSeparate_func(GL_BACK,
-					 backStencilFail,
-					 backZFail,
-					 backZPass);
-		glStencilFuncSeparate_func(GL_FRONT, frontFunc, frontRef, frontMask);
-		glStencilFuncSeparate_func(GL_BACK, backFunc, backRef, backMask);
-		glStencilMaskSeparate_func(GL_FRONT, frontWriteMask);
-		glStencilMaskSeparate_func(GL_BACK, backWriteMask);
+		glStencilOpSeparate(GL_FRONT,
+				    frontStencilFail,
+				    frontZFail,
+				    frontZPass);
+		glStencilOpSeparate(GL_BACK,
+				    backStencilFail,
+				    backZFail,
+				    backZPass);
+		glStencilFuncSeparate(GL_FRONT, frontFunc, frontRef, frontMask);
+		glStencilFuncSeparate(GL_BACK, backFunc, backRef, backMask);
+		glStencilMaskSeparate(GL_FRONT, frontWriteMask);
+		glStencilMaskSeparate(GL_BACK, backWriteMask);
 
 		// get state
 		glGetIntegerv(GL_STENCIL_FAIL, &get_frontStencilFail);
@@ -539,7 +499,7 @@ Stencil2Test::reset_stencil_state(int method)
 		break;
 	case EXT:
 		glDisable(GL_STENCIL_TEST_TWO_SIDE_EXT);
-		glActiveStencilFaceEXT_func(GL_FRONT);
+		glActiveStencilFaceEXT(GL_FRONT);
 		break;
 	case GL2:
 		break;
@@ -799,8 +759,6 @@ Stencil2Test::runOne(Stencil2Result &r, Window &w)
 	(void) w;  // silence warning
 	r.pass = true;
 
-	get_ext_functions();
-
 	// how many stencil bits (we assume at least 8 above)
 	glGetIntegerv(GL_STENCIL_BITS, &stencilBits);
 	stencilMax = (1 << stencilBits) - 1;
diff --git a/tests/glean/tstencil2.h b/tests/glean/tstencil2.h
index cd6da7f..7adac32 100644
--- a/tests/glean/tstencil2.h
+++ b/tests/glean/tstencil2.h
@@ -60,8 +60,6 @@ public:
 private:
 	GLint stencilBits, stencilMax;
 
-	void get_ext_functions();
-
 	bool have_ATI_separate_stencil(void) const;
 	bool have_EXT_stencil_two_side(void) const;
 	bool have_GL2_stencil_two_side(void) const;
diff --git a/tests/glean/ttexcombine.cpp b/tests/glean/ttexcombine.cpp
index 5c5234d..1a41c4d 100644
--- a/tests/glean/ttexcombine.cpp
+++ b/tests/glean/ttexcombine.cpp
@@ -994,7 +994,7 @@ TexCombineTest::TexEnv(glmachine &machine, int texUnit,
 	GLenum target, GLenum value) {
 
 	if (machine.NumTexUnits > 1)
-		p_glActiveTextureARB(GL_TEXTURE0_ARB + texUnit);
+		glActiveTextureARB(GL_TEXTURE0_ARB + texUnit);
 
 	glTexEnvi(GL_TEXTURE_ENV, target, value);
 	int err = glGetError();
@@ -1109,7 +1109,7 @@ TexCombineTest::SetupColors(glmachine &machine) {
 
 	for (int u = 0; u < machine.NumTexUnits; u++) {
 		if (machine.NumTexUnits > 1)
-			p_glActiveTextureARB(GL_TEXTURE0_ARB + u);
+			glActiveTextureARB(GL_TEXTURE0_ARB + u);
 		glBindTexture(GL_TEXTURE_2D, mTextures[u]);
 		glEnable(GL_TEXTURE_2D);
 		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
@@ -1370,7 +1370,7 @@ TexCombineTest::RunMultiTextureTest(glmachine &machine, BasicResult &r,
 		GLfloat renderedResult[4];
 		// use texcoord (0,0) for all vertices
 		for (int u = 0; u < machine.NumTexUnits; u++)
-			p_glMultiTexCoord2fARB(GL_TEXTURE0_ARB + u, 0, 0);
+			glMultiTexCoord2fARB(GL_TEXTURE0_ARB + u, 0, 0);
 		glBegin(GL_POLYGON);
 		glVertex2f(-1.0, -1.0);
 		glVertex2f( 1.0, -1.0);
@@ -1465,7 +1465,7 @@ TexCombineTest::RunCrossbarTest(glmachine &machine, BasicResult &r, Window& w) {
 		machine.EnvColor[unit][1] = 0.0F;
 		machine.EnvColor[unit][2] = 0.0F;
 		machine.EnvColor[unit][3] = 0.0F;
-		p_glActiveTextureARB(GL_TEXTURE0_ARB + unit);
+		glActiveTextureARB(GL_TEXTURE0_ARB + unit);
 		glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR,
 				   machine.EnvColor[unit]);
 	}
@@ -1490,7 +1490,7 @@ TexCombineTest::RunCrossbarTest(glmachine &machine, BasicResult &r, Window& w) {
 		GLfloat renderedResult[4];
 		// texcoord (0,) for all vertices is OK
 		for (unit = 0; unit < machine.NumTexUnits; unit++)
-			p_glMultiTexCoord2fARB(GL_TEXTURE0_ARB + unit, 0, 0);
+			glMultiTexCoord2fARB(GL_TEXTURE0_ARB + unit, 0, 0);
 		glColor4fv(machine.FragColor);
 		glBegin(GL_POLYGON);
 		glVertex2f(-1.0, -1.0);
@@ -1544,10 +1544,6 @@ TexCombineTest::runOne(BasicResult& r, Window& w) {
 	// these without testing them because we already know that we
 	// won't be invoked except on contexts that support the
 	// extension.
-	p_glActiveTextureARB = (PFNGLACTIVETEXTUREARBPROC)
-		(GLUtils::getProcAddress("glActiveTextureARB"));
-	p_glMultiTexCoord2fARB = (PFNGLMULTITEXCOORD2FARBPROC)
-		(GLUtils::getProcAddress("glMultiTexCoord2fARB"));
 
 	// Test the availability of the DOT3 extenstion
 	haveDot3 = GLUtils::haveExtensions("GL_EXT_texture_env_dot3");
diff --git a/tests/glean/ttexswizzle.cpp b/tests/glean/ttexswizzle.cpp
index 667dda2..924e10d 100644
--- a/tests/glean/ttexswizzle.cpp
+++ b/tests/glean/ttexswizzle.cpp
@@ -46,10 +46,6 @@
 
 namespace GLEAN {
 
-static PFNGLPROGRAMSTRINGARBPROC glProgramStringARB_func = NULL;
-static PFNGLBINDPROGRAMARBPROC glBindProgramARB_func = NULL;
-static PFNGLGENPROGRAMSARBPROC glGenProgramsARB_func = NULL;
-
 static const int TexSize = 16;
 
 static const GLfloat vertexData[4][4] = {
@@ -325,10 +321,10 @@ TexSwizzleTest::TestSwizzlesWithProgram(void)
 		"END\n";
 	GLuint prog;
 
-	glGenProgramsARB_func(1, &prog);
-	glBindProgramARB_func(GL_FRAGMENT_PROGRAM_ARB, prog);
-	glProgramStringARB_func(GL_FRAGMENT_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB,
-					   strlen(text), (const GLubyte *) text);
+	glGenProgramsARB(1, &prog);
+	glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, prog);
+	glProgramStringARB(GL_FRAGMENT_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB,
+			   strlen(text), (const GLubyte *) text);
 
 	assert(glGetError() == GL_NO_ERROR);
 
@@ -345,13 +341,6 @@ TexSwizzleTest::TestSwizzlesWithProgram(void)
 void
 TexSwizzleTest::Setup(void)
 {
-	glProgramStringARB_func = (PFNGLPROGRAMSTRINGARBPROC) GLUtils::getProcAddress("glProgramStringARB");
-	assert(glProgramStringARB_func);
-	glBindProgramARB_func = (PFNGLBINDPROGRAMARBPROC) GLUtils::getProcAddress("glBindProgramARB");
-	assert(glBindProgramARB_func);
-	glGenProgramsARB_func = (PFNGLGENPROGRAMSARBPROC) GLUtils::getProcAddress("glGenProgramsARB");
-	assert(glGenProgramsARB_func);
-
 	// setup transformation
 	glViewport(0, 0, windowSize, windowSize);
 	glMatrixMode(GL_MODELVIEW);
diff --git a/tests/glean/ttexunits.cpp b/tests/glean/ttexunits.cpp
index 62dd750..6cdcea5 100644
--- a/tests/glean/ttexunits.cpp
+++ b/tests/glean/ttexunits.cpp
@@ -40,10 +40,6 @@
 
 namespace GLEAN {
 
-static PFNGLACTIVETEXTUREPROC glActiveTexture_func = NULL;
-static PFNGLCLIENTACTIVETEXTUREPROC glClientActiveTexture_func = NULL;
-
-
 void
 TexUnitsTest::reportFailure(const char *msg) const
 {
@@ -80,11 +76,6 @@ TexUnitsTest::setup(void)
    glGetIntegerv(GL_MAX_TEXTURE_COORDS, &maxCoordUnits);
    glGetIntegerv(GL_MAX_TEXTURE_UNITS, &maxUnits);
 
-   glActiveTexture_func = (PFNGLACTIVETEXTUREPROC) GLUtils::getProcAddress("glActiveTexture");
-   assert(glActiveTexture_func);
-   glClientActiveTexture_func = (PFNGLCLIENTACTIVETEXTUREPROC) GLUtils::getProcAddress("glClientActiveTexture");
-   assert(glClientActiveTexture_func);
-
    return true;
 }
 
@@ -115,7 +106,7 @@ TexUnitsTest::testActiveTexture(void)
 
    // test glActiveTexture()
    for (i = 0; i < maxCombinedUnits; i++) {
-      glActiveTexture_func(GL_TEXTURE0 + i);
+      glActiveTexture(GL_TEXTURE0 + i);
       if (glGetError()) {
          reportFailure("glActiveTexture(GL_TEXTURE%d) failed", i);
          return false;
@@ -130,7 +121,7 @@ TexUnitsTest::testActiveTexture(void)
    }
 
    // this should fail:
-   glActiveTexture_func(GL_TEXTURE0 + maxCombinedUnits);
+   glActiveTexture(GL_TEXTURE0 + maxCombinedUnits);
    if (glGetError() != GL_INVALID_ENUM) {
       reportFailure("glActiveTexture(GL_TEXTURE%d) failed to generate an error",
                     maxCombinedUnits);
@@ -140,7 +131,7 @@ TexUnitsTest::testActiveTexture(void)
 
    // test glClientActiveTexture()
    for (i = 0; i < maxCoordUnits; i++) {
-      glClientActiveTexture_func(GL_TEXTURE0 + i);
+      glClientActiveTexture(GL_TEXTURE0 + i);
       if (glGetError()) {
          reportFailure("glClientActiveTexture(GL_TEXTURE%d) failed", i);
          return false;
@@ -155,7 +146,7 @@ TexUnitsTest::testActiveTexture(void)
    }
 
    // this should fail:
-   glClientActiveTexture_func(GL_TEXTURE0 + maxCoordUnits);
+   glClientActiveTexture(GL_TEXTURE0 + maxCoordUnits);
    if (glGetError() != GL_INVALID_ENUM) {
       reportFailure("glClientActiveTexture(GL_TEXTURE%d) failed to generate an error", maxCoordUnits);
       return false;
@@ -170,12 +161,12 @@ TexUnitsTest::testTextureMatrices(void)
 {
    GLint i;
 
-   glActiveTexture_func(GL_TEXTURE0);
+   glActiveTexture(GL_TEXTURE0);
    glMatrixMode(GL_TEXTURE);
 
    // set texture matrices
    for (i = 0; i < maxCoordUnits; i++) {
-      glActiveTexture_func(GL_TEXTURE0 + i);
+      glActiveTexture(GL_TEXTURE0 + i);
 
       // generate matrix
       GLfloat m[16];
@@ -188,7 +179,7 @@ TexUnitsTest::testTextureMatrices(void)
 
    // query texture matrices
    for (i = 0; i < maxCoordUnits; i++) {
-      glActiveTexture_func(GL_TEXTURE0 + i);
+      glActiveTexture(GL_TEXTURE0 + i);
 
       // get matrix and check it
       GLfloat m[16];
@@ -222,12 +213,12 @@ TexUnitsTest::testTextureCoordGen(void)
 {
    GLint i;
 
-   glActiveTexture_func(GL_TEXTURE0);
+   glActiveTexture(GL_TEXTURE0);
    glMatrixMode(GL_TEXTURE);
 
    // test texgen enable/disable
    for (i = 0; i < maxCombinedUnits; i++) {
-      glActiveTexture_func(GL_TEXTURE0 + i);
+      glActiveTexture(GL_TEXTURE0 + i);
 
       glEnable(GL_TEXTURE_GEN_S);
       glEnable(GL_TEXTURE_GEN_T);
@@ -263,7 +254,7 @@ TexUnitsTest::testTexcoordArrays(void)
    GLint i;
 
    for (i = 0; i < maxCoordUnits; i++) {
-      glClientActiveTexture_func(GL_TEXTURE0 + i);
+      glClientActiveTexture(GL_TEXTURE0 + i);
 
       glEnableClientState(GL_TEXTURE_COORD_ARRAY);
       if (glGetError()) {
diff --git a/tests/glean/tvertarraybgra.cpp b/tests/glean/tvertarraybgra.cpp
index 67651d3..6c95a2d 100644
--- a/tests/glean/tvertarraybgra.cpp
+++ b/tests/glean/tvertarraybgra.cpp
@@ -62,18 +62,6 @@ VertArrayBGRATest::reportError(const char *msg)
 bool
 VertArrayBGRATest::testAPI(void)
 {
-	// Get glSecondaryColorPointer() functon
-	PFNGLSECONDARYCOLORPOINTERPROC SecondaryColorPointer = NULL;
-	SecondaryColorPointer = (PFNGLSECONDARYCOLORPOINTERPROC)
-			GLUtils::getProcAddress("glSecondaryColorPointer");
-
-	// Get glVertexAttrib() function
-	PFNGLVERTEXATTRIBPOINTERARBPROC VertexAttribPointer = NULL;
-	if (GLUtils::getVersion() >= 2.0) {
-		VertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERARBPROC)
-			GLUtils::getProcAddress("glVertexAttribPointer");
-	}
-		
 	GLubyte array[4];
 
 	if (glGetError()) {
@@ -87,16 +75,16 @@ VertArrayBGRATest::testAPI(void)
 		return false;
 	}
 
-	if (SecondaryColorPointer) {
-		SecondaryColorPointer(GL_BGRA, GL_UNSIGNED_BYTE, 0, array);
+	if (glSecondaryColorPointer) {
+		glSecondaryColorPointer(GL_BGRA, GL_UNSIGNED_BYTE, 0, array);
 		if (glGetError()) {
 			reportError("glSecondaryColorPointer(size=GL_BGRA) generated an error.");
 			return false;
 		}
 	}
 
-	if (VertexAttribPointer) {
-		VertexAttribPointer(2, GL_BGRA, GL_UNSIGNED_BYTE, GL_TRUE, 0, array);
+	if (glVertexAttribPointer) {
+		glVertexAttribPointer(2, GL_BGRA, GL_UNSIGNED_BYTE, GL_TRUE, 0, array);
 		if (glGetError()) {
 			reportError("glVertexAttribPointer(size=GL_BGRA) generated an error.");
 			return false;
diff --git a/tests/glean/tvertattrib.cpp b/tests/glean/tvertattrib.cpp
index d8c681d..e18077a 100644
--- a/tests/glean/tvertattrib.cpp
+++ b/tests/glean/tvertattrib.cpp
@@ -189,8 +189,6 @@ AttribFuncNames[] = {
 // funcIndex = indicates which glVertexAttrib* function to use
 // refOut = returns the value which should now be in the attribute register
 //
-// Yeah, calling getProcAddress every time isn't very efficient.  Oh well.
-//
 static void
 SetAttrib(GLuint index, const GLfloat v[4], GLuint funcIndex, GLfloat refOut[4])
 {
@@ -199,153 +197,119 @@ SetAttrib(GLuint index, const GLfloat v[4], GLuint funcIndex, GLfloat refOut[4])
 #if defined(GL_NV_vertex_program)
 	case 0:
 		{
-			PFNGLVERTEXATTRIB1FNVPROC f = (PFNGLVERTEXATTRIB1FNVPROC)
-				GLUtils::getProcAddress("glVertexAttrib1fNV");
-			f(index, v[0]);
+			glVertexAttrib1fNV(index, v[0]);
 			COPY1(refOut, v);
 		}
 		break;
 	case 1:
 		{
-			PFNGLVERTEXATTRIB2FNVPROC f = (PFNGLVERTEXATTRIB2FNVPROC)
-				GLUtils::getProcAddress("glVertexAttrib2fNV");
-			f(index, v[0], v[1]);
+			glVertexAttrib2fNV(index, v[0], v[1]);
 			COPY2(refOut, v);
 		}
 		break;
 	case 2:
 		{
-			PFNGLVERTEXATTRIB3FNVPROC f = (PFNGLVERTEXATTRIB3FNVPROC)
-				GLUtils::getProcAddress("glVertexAttrib3fNV");
-			f(index, v[0], v[1], v[2]);
+			glVertexAttrib3fNV(index, v[0], v[1], v[2]);
 			COPY3(refOut, v);
 		}
 		break;
 	case 3:
 		{
-			PFNGLVERTEXATTRIB4FNVPROC f = (PFNGLVERTEXATTRIB4FNVPROC)
-				GLUtils::getProcAddress("glVertexAttrib4fNV");
-			f(index, v[0], v[1], v[2], v[3]);
+			glVertexAttrib4fNV(index, v[0], v[1], v[2], v[3]);
 			COPY4(refOut, v);
 		}
 		break;
 	case 4:
 		{
-			PFNGLVERTEXATTRIB1FVNVPROC f = (PFNGLVERTEXATTRIB1FVNVPROC)
-				GLUtils::getProcAddress("glVertexAttrib1fvNV");
-			f(index, v);
+			glVertexAttrib1fvNV(index, v);
 			COPY1(refOut, v);
 		}
 		break;
 	case 5:
 		{
-			PFNGLVERTEXATTRIB2FVNVPROC f = (PFNGLVERTEXATTRIB2FVNVPROC)
-				GLUtils::getProcAddress("glVertexAttrib2fvNV");
-			f(index, v);
+			glVertexAttrib2fvNV(index, v);
 			COPY2(refOut, v);
 		}
 		break;
 	case 6:
 		{
-			PFNGLVERTEXATTRIB3FVNVPROC f = (PFNGLVERTEXATTRIB3FVNVPROC)
-				GLUtils::getProcAddress("glVertexAttrib3fvNV");
-			f(index, v);
+			glVertexAttrib3fvNV(index, v);
 			COPY3(refOut, v);
 		}
 		break;
 	case 7:
 		{
-			PFNGLVERTEXATTRIB4FVNVPROC f = (PFNGLVERTEXATTRIB4FVNVPROC)
-				GLUtils::getProcAddress("glVertexAttrib4fvNV");
-			f(index, v);
+			glVertexAttrib4fvNV(index, v);
 			COPY4(refOut, v);
 		}
 		break;
 	// ** GLdouble-valued functions
 	case 8:
 		{
-			PFNGLVERTEXATTRIB1DNVPROC f = (PFNGLVERTEXATTRIB1DNVPROC)
-				GLUtils::getProcAddress("glVertexAttrib1dNV");
-			f(index, v[0]);
+			glVertexAttrib1dNV(index, v[0]);
 			COPY1(refOut, v);
 		}
 		break;
 	case 9:
 		{
-			PFNGLVERTEXATTRIB2DNVPROC f = (PFNGLVERTEXATTRIB2DNVPROC)
-				GLUtils::getProcAddress("glVertexAttrib2dNV");
-			f(index, v[0], v[1]);
+			glVertexAttrib2dNV(index, v[0], v[1]);
 			COPY2(refOut, v);
 		}
 		break;
 	case 10:
 		{
-			PFNGLVERTEXATTRIB3DNVPROC f = (PFNGLVERTEXATTRIB3DNVPROC)
-				GLUtils::getProcAddress("glVertexAttrib3dNV");
-			f(index, v[0], v[1], v[2]);
+			glVertexAttrib3dNV(index, v[0], v[1], v[2]);
 			COPY3(refOut, v);
 		}
 		break;
 	case 11:
 		{
-			PFNGLVERTEXATTRIB4DNVPROC f = (PFNGLVERTEXATTRIB4DNVPROC)
-				GLUtils::getProcAddress("glVertexAttrib4dNV");
-			f(index, v[0], v[1], v[2], v[3]);
+			glVertexAttrib4dNV(index, v[0], v[1], v[2], v[3]);
 			COPY4(refOut, v);
 		}
 		break;
 	case 12:
 		{
-			PFNGLVERTEXATTRIB1DVNVPROC f = (PFNGLVERTEXATTRIB1DVNVPROC)
-				GLUtils::getProcAddress("glVertexAttrib1dvNV");
 			GLdouble d[1];
 			d[0] = v[0];
-			f(index, d);
+			glVertexAttrib1dvNV(index, d);
 			COPY1(refOut, v);
 		}
 		break;
 	case 13:
 		{
-			PFNGLVERTEXATTRIB2DVNVPROC f = (PFNGLVERTEXATTRIB2DVNVPROC)
-				GLUtils::getProcAddress("glVertexAttrib2dvNV");
 			GLdouble d[2];
 			d[0] = v[0];
 			d[1] = v[1];
-			f(index, d);
+			glVertexAttrib2dvNV(index, d);
 			COPY2(refOut, v);
 		}
 		break;
 	case 14:
 		{
-			PFNGLVERTEXATTRIB3DVNVPROC f = (PFNGLVERTEXATTRIB3DVNVPROC)
-				GLUtils::getProcAddress("glVertexAttrib3dvNV");
 			GLdouble d[3];
 			d[0] = v[0];
 			d[1] = v[1];
 			d[2] = v[2];
-			f(index, d);
+			glVertexAttrib3dvNV(index, d);
 			COPY3(refOut, v);
 		}
 		break;
 	case 15:
 		{
-			PFNGLVERTEXATTRIB4DVNVPROC f = (PFNGLVERTEXATTRIB4DVNVPROC)
-				GLUtils::getProcAddress("glVertexAttrib4dvNV");
 			GLdouble d[4];
 			d[0] = v[0];
 			d[1] = v[1];
 			d[2] = v[2];
 			d[3] = v[3];
-			f(index, d);
+			glVertexAttrib4dvNV(index, d);
 			COPY4(refOut, v);
 		}
 		break;
 	// ** GLshort-valued functions
 	case 16:
 		{
-			PFNGLVERTEXATTRIB1SNVPROC f = (PFNGLVERTEXATTRIB1SNVPROC)
-				GLUtils::getProcAddress("glVertexAttrib1sNV");
-			f(index, (GLshort) v[0]);
+			glVertexAttrib1sNV(index, (GLshort) v[0]);
 			refOut[0] = (GLfloat) (GLshort) v[0];
 			refOut[1] = 0.0F;
 			refOut[2] = 0.0F;
@@ -354,9 +318,7 @@ SetAttrib(GLuint index, const GLfloat v[4], GLuint funcIndex, GLfloat refOut[4])
 		break;
 	case 17:
 		{
-			PFNGLVERTEXATTRIB2SNVPROC f = (PFNGLVERTEXATTRIB2SNVPROC)
-				GLUtils::getProcAddress("glVertexAttrib2sNV");
-			f(index, (GLshort) v[0], (GLshort) v[1]);
+			glVertexAttrib2sNV(index, (GLshort) v[0], (GLshort) v[1]);
 			refOut[0] = (GLfloat) (GLshort) v[0];
 			refOut[1] = (GLfloat) (GLshort) v[1];
 			refOut[2] = 0.0F;
@@ -365,9 +327,7 @@ SetAttrib(GLuint index, const GLfloat v[4], GLuint funcIndex, GLfloat refOut[4])
 		break;
 	case 18:
 		{
-			PFNGLVERTEXATTRIB3SNVPROC f = (PFNGLVERTEXATTRIB3SNVPROC)
-				GLUtils::getProcAddress("glVertexAttrib3sNV");
-			f(index, (GLshort) v[0], (GLshort) v[1], (GLshort) v[2]);
+			glVertexAttrib3sNV(index, (GLshort) v[0], (GLshort) v[1], (GLshort) v[2]);
 			refOut[0] = (GLfloat) (GLshort) v[0];
 			refOut[1] = (GLfloat) (GLshort) v[1];
 			refOut[2] = (GLfloat) (GLshort) v[2];
@@ -376,9 +336,7 @@ SetAttrib(GLuint index, const GLfloat v[4], GLuint funcIndex, GLfloat refOut[4])
 		break;
 	case 19:
 		{
-			PFNGLVERTEXATTRIB4SNVPROC f = (PFNGLVERTEXATTRIB4SNVPROC)
-				GLUtils::getProcAddress("glVertexAttrib4sNV");
-			f(index, (GLshort) v[0], (GLshort) v[1], (GLshort) v[2], (GLshort) v[3]);
+			glVertexAttrib4sNV(index, (GLshort) v[0], (GLshort) v[1], (GLshort) v[2], (GLshort) v[3]);
 			refOut[0] = (GLfloat) (GLshort) v[0];
 			refOut[1] = (GLfloat) (GLshort) v[1];
 			refOut[2] = (GLfloat) (GLshort) v[2];
@@ -387,11 +345,9 @@ SetAttrib(GLuint index, const GLfloat v[4], GLuint funcIndex, GLfloat refOut[4])
 		break;
 	case 20:
 		{
-			PFNGLVERTEXATTRIB1SVNVPROC f = (PFNGLVERTEXATTRIB1SVNVPROC)
-				GLUtils::getProcAddress("glVertexAttrib1svNV");
 			GLshort s[1];
 			s[0] = (GLshort) v[0];
-			f(index, s);
+			glVertexAttrib1svNV(index, s);
 			refOut[0] = (GLfloat) (GLshort) v[0];
 			refOut[1] = 0.0F;
 			refOut[2] = 0.0F;
@@ -400,12 +356,10 @@ SetAttrib(GLuint index, const GLfloat v[4], GLuint funcIndex, GLfloat refOut[4])
 		break;
 	case 21:
 		{
-			PFNGLVERTEXATTRIB2SVNVPROC f = (PFNGLVERTEXATTRIB2SVNVPROC)
-				GLUtils::getProcAddress("glVertexAttrib2svNV");
 			GLshort s[2];
 			s[0] = (GLshort) v[0];
 			s[1] = (GLshort) v[1];
-			f(index, s);
+			glVertexAttrib2svNV(index, s);
 			refOut[0] = (GLfloat) (GLshort) v[0];
 			refOut[1] = (GLfloat) (GLshort) v[1];
 			refOut[2] = 0.0F;
@@ -414,13 +368,11 @@ SetAttrib(GLuint index, const GLfloat v[4], GLuint funcIndex, GLfloat refOut[4])
 		break;
 	case 22:
 		{
-			PFNGLVERTEXATTRIB3SVNVPROC f = (PFNGLVERTEXATTRIB3SVNVPROC)
-				GLUtils::getProcAddress("glVertexAttrib3svNV");
 			GLshort s[3];
 			s[0] = (GLshort) v[0];
 			s[1] = (GLshort) v[1];
 			s[2] = (GLshort) v[2];
-			f(index, s);
+			glVertexAttrib3svNV(index, s);
 			refOut[0] = (GLfloat) (GLshort) v[0];
 			refOut[1] = (GLfloat) (GLshort) v[1];
 			refOut[2] = (GLfloat) (GLshort) v[2];
@@ -429,14 +381,12 @@ SetAttrib(GLuint index, const GLfloat v[4], GLuint funcIndex, GLfloat refOut[4])
 		break;
 	case 23:
 		{
-			PFNGLVERTEXATTRIB4SVNVPROC f = (PFNGLVERTEXATTRIB4SVNVPROC)
-				GLUtils::getProcAddress("glVertexAttrib4svNV");
 			GLshort s[4];
 			s[0] = (GLshort) v[0];
 			s[1] = (GLshort) v[1];
 			s[2] = (GLshort) v[2];
 			s[3] = (GLshort) v[3];
-			f(index, s);
+			glVertexAttrib4svNV(index, s);
 			refOut[0] = (GLfloat) (GLshort) v[0];
 			refOut[1] = (GLfloat) (GLshort) v[1];
 			refOut[2] = (GLfloat) (GLshort) v[2];
@@ -446,9 +396,7 @@ SetAttrib(GLuint index, const GLfloat v[4], GLuint funcIndex, GLfloat refOut[4])
 	// ** GLubyte-valued functions
 	case 24:
 		{
-			PFNGLVERTEXATTRIB4UBNVPROC f = (PFNGLVERTEXATTRIB4UBNVPROC)
-				GLUtils::getProcAddress("glVertexAttrib4ubNV");
-			f(index, FLOAT_TO_UBYTE(v[0]), FLOAT_TO_UBYTE(v[1]), FLOAT_TO_UBYTE(v[2]), FLOAT_TO_UBYTE(v[3]));
+			glVertexAttrib4ubNV(index, FLOAT_TO_UBYTE(v[0]), FLOAT_TO_UBYTE(v[1]), FLOAT_TO_UBYTE(v[2]), FLOAT_TO_UBYTE(v[3]));
 			refOut[0] = v[0];
 			refOut[1] = v[1];
 			refOut[2] = v[2];
@@ -457,12 +405,10 @@ SetAttrib(GLuint index, const GLfloat v[4], GLuint funcIndex, GLfloat refOut[4])
 		break;
 	case 25:
 		{
-			PFNGLVERTEXATTRIB4UBVNVPROC f = (PFNGLVERTEXATTRIB4UBVNVPROC)
-				GLUtils::getProcAddress("glVertexAttrib4ubvNV");
 			GLubyte ub[4];
 			for (int i = 0; i < 4; i++ )
 			   ub[i] = FLOAT_TO_UBYTE(v[i]);
-			f(index, ub);
+			glVertexAttrib4ubvNV(index, ub);
 			refOut[0] = v[0];
 			refOut[1] = v[1];
 			refOut[2] = v[2];
@@ -476,153 +422,119 @@ SetAttrib(GLuint index, const GLfloat v[4], GLuint funcIndex, GLfloat refOut[4])
 	// ** GLfloat-valued functions
 	case 26:
 		{
-			PFNGLVERTEXATTRIB1FARBPROC f = (PFNGLVERTEXATTRIB1FARBPROC)
-				GLUtils::getProcAddress("glVertexAttrib1fARB");
-			f(index, v[0]);
+			glVertexAttrib1fARB(index, v[0]);
 			COPY1(refOut, v);
 		}
 		break;
 	case 27:
 		{
-			PFNGLVERTEXATTRIB2FARBPROC f = (PFNGLVERTEXATTRIB2FARBPROC)
-				GLUtils::getProcAddress("glVertexAttrib2fARB");
-			f(index, v[0], v[1]);
+			glVertexAttrib2fARB(index, v[0], v[1]);
 			COPY2(refOut, v);
 		}
 		break;
 	case 28:
 		{
-			PFNGLVERTEXATTRIB3FARBPROC f = (PFNGLVERTEXATTRIB3FARBPROC)
-				GLUtils::getProcAddress("glVertexAttrib3fARB");
-			f(index, v[0], v[1], v[2]);
+			glVertexAttrib3fARB(index, v[0], v[1], v[2]);
 			COPY3(refOut, v);
 		}
 		break;
 	case 29:
 		{
-			PFNGLVERTEXATTRIB4FARBPROC f = (PFNGLVERTEXATTRIB4FARBPROC)
-				GLUtils::getProcAddress("glVertexAttrib4fARB");
-			f(index, v[0], v[1], v[2], v[3]);
+			glVertexAttrib4fARB(index, v[0], v[1], v[2], v[3]);
 			COPY4(refOut, v);
 		}
 		break;
 	case 30:
 		{
-			PFNGLVERTEXATTRIB1FVARBPROC f = (PFNGLVERTEXATTRIB1FVARBPROC)
-				GLUtils::getProcAddress("glVertexAttrib1fvARB");
-			f(index, v);
+			glVertexAttrib1fvARB(index, v);
 			COPY1(refOut, v);
 		}
 		break;
 	case 31:
 		{
-			PFNGLVERTEXATTRIB2FVARBPROC f = (PFNGLVERTEXATTRIB2FVARBPROC)
-				GLUtils::getProcAddress("glVertexAttrib2fvARB");
-			f(index, v);
+			glVertexAttrib2fvARB(index, v);
 			COPY2(refOut, v);
 		}
 		break;
 	case 32:
 		{
-			PFNGLVERTEXATTRIB3FVARBPROC f = (PFNGLVERTEXATTRIB3FVARBPROC)
-				GLUtils::getProcAddress("glVertexAttrib3fvARB");
-			f(index, v);
+			glVertexAttrib3fvARB(index, v);
 			COPY3(refOut, v);
 		}
 		break;
 	case 33:
 		{
-			PFNGLVERTEXATTRIB4FVARBPROC f = (PFNGLVERTEXATTRIB4FVARBPROC)
-				GLUtils::getProcAddress("glVertexAttrib4fvARB");
-			f(index, v);
+			glVertexAttrib4fvARB(index, v);
 			COPY4(refOut, v);
 		}
 		break;
 	// ** GLdouble-valued functions
 	case 34:
 		{
-			PFNGLVERTEXATTRIB1DARBPROC f = (PFNGLVERTEXATTRIB1DARBPROC)
-				GLUtils::getProcAddress("glVertexAttrib1dARB");
-			f(index, v[0]);
+			glVertexAttrib1dARB(index, v[0]);
 			COPY1(refOut, v);
 		}
 		break;
 	case 35:
 		{
-			PFNGLVERTEXATTRIB2DARBPROC f = (PFNGLVERTEXATTRIB2DARBPROC)
-				GLUtils::getProcAddress("glVertexAttrib2dARB");
-			f(index, v[0], v[1]);
+			glVertexAttrib2dARB(index, v[0], v[1]);
 			COPY2(refOut, v);
 		}
 		break;
 	case 36:
 		{
-			PFNGLVERTEXATTRIB3DARBPROC f = (PFNGLVERTEXATTRIB3DARBPROC)
-				GLUtils::getProcAddress("glVertexAttrib3dARB");
-			f(index, v[0], v[1], v[2]);
+			glVertexAttrib3dARB(index, v[0], v[1], v[2]);
 			COPY3(refOut, v);
 		}
 		break;
 	case 37:
 		{
-			PFNGLVERTEXATTRIB4DARBPROC f = (PFNGLVERTEXATTRIB4DARBPROC)
-				GLUtils::getProcAddress("glVertexAttrib4dARB");
-			f(index, v[0], v[1], v[2], v[3]);
+			glVertexAttrib4dARB(index, v[0], v[1], v[2], v[3]);
 			COPY4(refOut, v);
 		}
 		break;
 	case 38:
 		{
-			PFNGLVERTEXATTRIB1DVARBPROC f = (PFNGLVERTEXATTRIB1DVARBPROC)
-				GLUtils::getProcAddress("glVertexAttrib1dvARB");
 			GLdouble d[1];
 			d[0] = v[0];
-			f(index, d);
+			glVertexAttrib1dvARB(index, d);
 			COPY1(refOut, v);
 		}
 		break;
 	case 39:
 		{
-			PFNGLVERTEXATTRIB2DVARBPROC f = (PFNGLVERTEXATTRIB2DVARBPROC)
-				GLUtils::getProcAddress("glVertexAttrib2dvARB");
 			GLdouble d[2];
 			d[0] = v[0];
 			d[1] = v[1];
-			f(index, d);
+			glVertexAttrib2dvARB(index, d);
 			COPY2(refOut, v);
 		}
 		break;
 	case 40:
 		{
-			PFNGLVERTEXATTRIB3DVARBPROC f = (PFNGLVERTEXATTRIB3DVARBPROC)
-				GLUtils::getProcAddress("glVertexAttrib3dvARB");
 			GLdouble d[3];
 			d[0] = v[0];
 			d[1] = v[1];
 			d[2] = v[2];
-			f(index, d);
+			glVertexAttrib3dvARB(index, d);
 			COPY3(refOut, v);
 		}
 		break;
 	case 41:
 		{
-			PFNGLVERTEXATTRIB4DVARBPROC f = (PFNGLVERTEXATTRIB4DVARBPROC)
-				GLUtils::getProcAddress("glVertexAttrib4dvARB");
 			GLdouble d[4];
 			d[0] = v[0];
 			d[1] = v[1];
 			d[2] = v[2];
 			d[3] = v[3];
-			f(index, d);
+			glVertexAttrib4dvARB(index, d);
 			COPY4(refOut, v);
 		}
 		break;
 	// ** GLshort-valued functions
 	case 42:
 		{
-			PFNGLVERTEXATTRIB1SARBPROC f = (PFNGLVERTEXATTRIB1SARBPROC)
-				GLUtils::getProcAddress("glVertexAttrib1sARB");
-			f(index, (GLshort) v[0]);
+			glVertexAttrib1sARB(index, (GLshort) v[0]);
 			refOut[0] = (GLfloat) (GLshort) v[0];
 			refOut[1] = 0.0F;
 			refOut[2] = 0.0F;
@@ -631,9 +543,7 @@ SetAttrib(GLuint index, const GLfloat v[4], GLuint funcIndex, GLfloat refOut[4])
 		break;
 	case 43:
 		{
-			PFNGLVERTEXATTRIB2SARBPROC f = (PFNGLVERTEXATTRIB2SARBPROC)
-				GLUtils::getProcAddress("glVertexAttrib2sARB");
-			f(index, (GLshort) v[0], (GLshort) v[1]);
+			glVertexAttrib2sARB(index, (GLshort) v[0], (GLshort) v[1]);
 			refOut[0] = (GLfloat) (GLshort) v[0];
 			refOut[1] = (GLfloat) (GLshort) v[1];
 			refOut[2] = 0.0F;
@@ -642,9 +552,7 @@ SetAttrib(GLuint index, const GLfloat v[4], GLuint funcIndex, GLfloat refOut[4])
 		break;
 	case 44:
 		{
-			PFNGLVERTEXATTRIB3SARBPROC f = (PFNGLVERTEXATTRIB3SARBPROC)
-				GLUtils::getProcAddress("glVertexAttrib3sARB");
-			f(index, (GLshort) v[0], (GLshort) v[1], (GLshort) v[2]);
+			glVertexAttrib3sARB(index, (GLshort) v[0], (GLshort) v[1], (GLshort) v[2]);
 			refOut[0] = (GLfloat) (GLshort) v[0];
 			refOut[1] = (GLfloat) (GLshort) v[1];
 			refOut[2] = (GLfloat) (GLshort) v[2];
@@ -653,9 +561,7 @@ SetAttrib(GLuint index, const GLfloat v[4], GLuint funcIndex, GLfloat refOut[4])
 		break;
 	case 45:
 		{
-			PFNGLVERTEXATTRIB4SARBPROC f = (PFNGLVERTEXATTRIB4SARBPROC)
-				GLUtils::getProcAddress("glVertexAttrib4sARB");
-			f(index, (GLshort) v[0], (GLshort) v[1], (GLshort) v[2], (GLshort) v[3]);
+			glVertexAttrib4sARB(index, (GLshort) v[0], (GLshort) v[1], (GLshort) v[2], (GLshort) v[3]);
 			refOut[0] = (GLfloat) (GLshort) v[0];
 			refOut[1] = (GLfloat) (GLshort) v[1];
 			refOut[2] = (GLfloat) (GLshort) v[2];
@@ -664,11 +570,9 @@ SetAttrib(GLuint index, const GLfloat v[4], GLuint funcIndex, GLfloat refOut[4])
 		break;
 	case 46:
 		{
-			PFNGLVERTEXATTRIB1SVARBPROC f = (PFNGLVERTEXATTRIB1SVARBPROC)
-				GLUtils::getProcAddress("glVertexAttrib1svARB");
 			GLshort s[1];
 			s[0] = (GLshort) v[0];
-			f(index, s);
+			glVertexAttrib1svARB(index, s);
 			refOut[0] = (GLfloat) (GLshort) v[0];
 			refOut[1] = 0.0F;
 			refOut[2] = 0.0F;
@@ -677,12 +581,10 @@ SetAttrib(GLuint index, const GLfloat v[4], GLuint funcIndex, GLfloat refOut[4])
 		break;
 	case 47:
 		{
-			PFNGLVERTEXATTRIB2SVARBPROC f = (PFNGLVERTEXATTRIB2SVARBPROC)
-				GLUtils::getProcAddress("glVertexAttrib2svARB");
 			GLshort s[2];
 			s[0] = (GLshort) v[0];
 			s[1] = (GLshort) v[1];
-			f(index, s);
+			glVertexAttrib2svARB(index, s);
 			refOut[0] = (GLfloat) (GLshort) v[0];
 			refOut[1] = (GLfloat) (GLshort) v[1];
 			refOut[2] = 0.0F;
@@ -691,13 +593,11 @@ SetAttrib(GLuint index, const GLfloat v[4], GLuint funcIndex, GLfloat refOut[4])
 		break;
 	case 48:
 		{
-			PFNGLVERTEXATTRIB3SVARBPROC f = (PFNGLVERTEXATTRIB3SVARBPROC)
-				GLUtils::getProcAddress("glVertexAttrib3svARB");
 			GLshort s[3];
 			s[0] = (GLshort) v[0];
 			s[1] = (GLshort) v[1];
 			s[2] = (GLshort) v[2];
-			f(index, s);
+			glVertexAttrib3svARB(index, s);
 			refOut[0] = (GLfloat) (GLshort) v[0];
 			refOut[1] = (GLfloat) (GLshort) v[1];
 			refOut[2] = (GLfloat) (GLshort) v[2];
@@ -706,14 +606,12 @@ SetAttrib(GLuint index, const GLfloat v[4], GLuint funcIndex, GLfloat refOut[4])
 		break;
 	case 49:
 		{
-			PFNGLVERTEXATTRIB4SVARBPROC f = (PFNGLVERTEXATTRIB4SVARBPROC)
-				GLUtils::getProcAddress("glVertexAttrib4svARB");
 			GLshort s[4];
 			s[0] = (GLshort) v[0];
 			s[1] = (GLshort) v[1];
 			s[2] = (GLshort) v[2];
 			s[3] = (GLshort) v[3];
-			f(index, s);
+			glVertexAttrib4svARB(index, s);
 			refOut[0] = (GLfloat) (GLshort) v[0];
 			refOut[1] = (GLfloat) (GLshort) v[1];
 			refOut[2] = (GLfloat) (GLshort) v[2];
@@ -722,43 +620,35 @@ SetAttrib(GLuint index, const GLfloat v[4], GLuint funcIndex, GLfloat refOut[4])
 		break;
 	case 50:
 		{
-			PFNGLVERTEXATTRIB4NSVARBPROC f = (PFNGLVERTEXATTRIB4NSVARBPROC)
-				GLUtils::getProcAddress("glVertexAttrib4NsvARB");
 			GLshort s[4];
 			for (int i = 0; i < 4; i++)
 				s[i] = FLOAT_TO_SHORT(v[i]);
-			f(index, s);
+			glVertexAttrib4NsvARB(index, s);
 			COPY4(refOut, v);
 		}
 		break;
 	// ** GLubyte-valued functions
 	case 51:
 		{
-			PFNGLVERTEXATTRIB4NUBARBPROC f = (PFNGLVERTEXATTRIB4NUBARBPROC)
-				GLUtils::getProcAddress("glVertexAttrib4NubARB");
-			f(index, FLOAT_TO_UBYTE(v[0]), FLOAT_TO_UBYTE(v[1]), FLOAT_TO_UBYTE(v[2]), FLOAT_TO_UBYTE(v[3]));
+			glVertexAttrib4NubARB(index, FLOAT_TO_UBYTE(v[0]), FLOAT_TO_UBYTE(v[1]), FLOAT_TO_UBYTE(v[2]), FLOAT_TO_UBYTE(v[3]));
 			COPY4(refOut, v);
 		}
 		break;
 	case 52:
 		{
-			PFNGLVERTEXATTRIB4NUBVARBPROC f = (PFNGLVERTEXATTRIB4NUBVARBPROC)
-				GLUtils::getProcAddress("glVertexAttrib4NubvARB");
 			GLubyte ub[4];
 			for (int i = 0; i < 4; i++ )
 			   ub[i] = FLOAT_TO_UBYTE(v[i]);
-			f(index, ub);
+			glVertexAttrib4NubvARB(index, ub);
 			COPY4(refOut, v);
 		}
 		break;
 	case 53:
 		{
-			PFNGLVERTEXATTRIB4UBVARBPROC f = (PFNGLVERTEXATTRIB4UBVARBPROC)
-				GLUtils::getProcAddress("glVertexAttrib4ubvARB");
 			GLubyte ub[4];
 			for (int i = 0; i < 4; i++ )
 			   ub[i] = (GLubyte) v[i];
-			f(index, ub);
+			glVertexAttrib4ubvARB(index, ub);
 			refOut[0] = (GLfloat) (GLubyte) v[0];
 			refOut[1] = (GLfloat) (GLubyte) v[1];
 			refOut[2] = (GLfloat) (GLubyte) v[2];
@@ -768,23 +658,19 @@ SetAttrib(GLuint index, const GLfloat v[4], GLuint funcIndex, GLfloat refOut[4])
 	// ** GLbyte-valued functions
 	case 54:
 		{
-			PFNGLVERTEXATTRIB4NBVARBPROC f = (PFNGLVERTEXATTRIB4NBVARBPROC)
-				GLUtils::getProcAddress("glVertexAttrib4NbvARB");
 			GLbyte b[4];
 			for (int i = 0; i < 4; i++ )
 			   b[i] = FLOAT_TO_BYTE(v[i]);
-			f(index, b);
+			glVertexAttrib4NbvARB(index, b);
 			COPY4(refOut, v);
 		}
 		break;
 	case 55:
 		{
-			PFNGLVERTEXATTRIB4BVARBPROC f = (PFNGLVERTEXATTRIB4BVARBPROC)
-				GLUtils::getProcAddress("glVertexAttrib4bvARB");
 			GLbyte b[4];
 			for (int i = 0; i < 4; i++ )
 			   b[i] = (GLbyte) v[i];
-			f(index, b);
+			glVertexAttrib4bvARB(index, b);
 			refOut[0] = (GLfloat) (GLbyte) v[0];
 			refOut[1] = (GLfloat) (GLbyte) v[1];
 			refOut[2] = (GLfloat) (GLbyte) v[2];
@@ -794,23 +680,19 @@ SetAttrib(GLuint index, const GLfloat v[4], GLuint funcIndex, GLfloat refOut[4])
 	// ** GLint-valued functions
 	case 56:
 		{
-			PFNGLVERTEXATTRIB4NIVARBPROC f = (PFNGLVERTEXATTRIB4NIVARBPROC)
-				GLUtils::getProcAddress("glVertexAttrib4NivARB");
 			GLint iv[4];
 			for (int i = 0; i < 4; i++ )
 			   iv[i] = FLOAT_TO_INT(v[i]);
-			f(index, iv);
+			glVertexAttrib4NivARB(index, iv);
 			COPY4(refOut, v);
 		}
 		break;
 	case 57:
 		{
-			PFNGLVERTEXATTRIB4IVARBPROC f = (PFNGLVERTEXATTRIB4IVARBPROC)
-				GLUtils::getProcAddress("glVertexAttrib4ivARB");
 			GLint iv[4];
 			for (int i = 0; i < 4; i++ )
 			   iv[i] = (GLint) v[i];
-			f(index, iv);
+			glVertexAttrib4ivARB(index, iv);
 			refOut[0] = (GLfloat) (GLint) v[0];
 			refOut[1] = (GLfloat) (GLint) v[1];
 			refOut[2] = (GLfloat) (GLint) v[2];
@@ -820,23 +702,19 @@ SetAttrib(GLuint index, const GLfloat v[4], GLuint funcIndex, GLfloat refOut[4])
 	// ** GLuint-valued functions
 	case 58:
 		{
-			PFNGLVERTEXATTRIB4NUIVARBPROC f = (PFNGLVERTEXATTRIB4NUIVARBPROC)
-				GLUtils::getProcAddress("glVertexAttrib4NuivARB");
 			GLuint ui[4];
 			for (int i = 0; i < 4; i++ )
 			   ui[i] = FLOAT_TO_UINT(v[i]);
-			f(index, ui);
+			glVertexAttrib4NuivARB(index, ui);
 			COPY4(refOut, v);
 		}
 		break;
 	case 59:
 		{
-			PFNGLVERTEXATTRIB4UIVARBPROC f = (PFNGLVERTEXATTRIB4UIVARBPROC)
-				GLUtils::getProcAddress("glVertexAttrib4uivARB");
 			GLuint ui[4];
 			for (int i = 0; i < 4; i++ )
 			   ui[i] = (GLint) v[i];
-			f(index, ui);
+			glVertexAttrib4uivARB(index, ui);
 			refOut[0] = (GLfloat) (GLint) v[0];
 			refOut[1] = (GLfloat) (GLint) v[1];
 			refOut[2] = (GLfloat) (GLint) v[2];
@@ -846,23 +724,19 @@ SetAttrib(GLuint index, const GLfloat v[4], GLuint funcIndex, GLfloat refOut[4])
 	// ** GLushort-valued functions
 	case 60:
 		{
-			PFNGLVERTEXATTRIB4NUSVARBPROC f = (PFNGLVERTEXATTRIB4NUSVARBPROC)
-				GLUtils::getProcAddress("glVertexAttrib4NusvARB");
 			GLushort us[4];
 			for (int i = 0; i < 4; i++ )
 			   us[i] = FLOAT_TO_USHORT(v[i]);
-			f(index, us);
+			glVertexAttrib4NusvARB(index, us);
 			COPY4(refOut, v);
 		}
 		break;
 	case 61:
 		{
-			PFNGLVERTEXATTRIB4USVARBPROC f = (PFNGLVERTEXATTRIB4USVARBPROC)
-				GLUtils::getProcAddress("glVertexAttrib4usvARB");
 			GLushort us[4];
 			for (int i = 0; i < 4; i++ )
 			   us[i] = (GLint) v[i];
-			f(index, us);
+			glVertexAttrib4usvARB(index, us);
 			refOut[0] = (GLfloat) (GLint) v[0];
 			refOut[1] = (GLfloat) (GLint) v[1];
 			refOut[2] = (GLfloat) (GLint) v[2];
@@ -874,153 +748,119 @@ SetAttrib(GLuint index, const GLfloat v[4], GLuint funcIndex, GLfloat refOut[4])
 #if defined(GL_VERSION_2_0)
 	case 62:
 		{
-			PFNGLVERTEXATTRIB1FPROC f = (PFNGLVERTEXATTRIB1FPROC)
-				GLUtils::getProcAddress("glVertexAttrib1f");
-			f(index, v[0]);
+			glVertexAttrib1f(index, v[0]);
 			COPY1(refOut, v);
 		}
 		break;
 	case 63:
 		{
-			PFNGLVERTEXATTRIB2FPROC f = (PFNGLVERTEXATTRIB2FPROC)
-				GLUtils::getProcAddress("glVertexAttrib2f");
-			f(index, v[0], v[1]);
+			glVertexAttrib2f(index, v[0], v[1]);
 			COPY2(refOut, v);
 		}
 		break;
 	case 64:
 		{
-			PFNGLVERTEXATTRIB3FPROC f = (PFNGLVERTEXATTRIB3FPROC)
-				GLUtils::getProcAddress("glVertexAttrib3f");
-			f(index, v[0], v[1], v[2]);
+			glVertexAttrib3f(index, v[0], v[1], v[2]);
 			COPY3(refOut, v);
 		}
 		break;
 	case 65:
 		{
-			PFNGLVERTEXATTRIB4FPROC f = (PFNGLVERTEXATTRIB4FPROC)
-				GLUtils::getProcAddress("glVertexAttrib4f");
-			f(index, v[0], v[1], v[2], v[3]);
+			glVertexAttrib4f(index, v[0], v[1], v[2], v[3]);
 			COPY4(refOut, v);
 		}
 		break;
 	case 66:
 		{
-			PFNGLVERTEXATTRIB1FVPROC f = (PFNGLVERTEXATTRIB1FVPROC)
-				GLUtils::getProcAddress("glVertexAttrib1fv");
-			f(index, v);
+			glVertexAttrib1fv(index, v);
 			COPY1(refOut, v);
 		}
 		break;
 	case 67:
 		{
-			PFNGLVERTEXATTRIB2FVPROC f = (PFNGLVERTEXATTRIB2FVPROC)
-				GLUtils::getProcAddress("glVertexAttrib2fv");
-			f(index, v);
+			glVertexAttrib2fv(index, v);
 			COPY2(refOut, v);
 		}
 		break;
 	case 68:
 		{
-			PFNGLVERTEXATTRIB3FVPROC f = (PFNGLVERTEXATTRIB3FVPROC)
-				GLUtils::getProcAddress("glVertexAttrib3fv");
-			f(index, v);
+			glVertexAttrib3fv(index, v);
 			COPY3(refOut, v);
 		}
 		break;
 	case 69:
 		{
-			PFNGLVERTEXATTRIB4FVPROC f = (PFNGLVERTEXATTRIB4FVPROC)
-				GLUtils::getProcAddress("glVertexAttrib4fv");
-			f(index, v);
+			glVertexAttrib4fv(index, v);
 			COPY4(refOut, v);
 		}
 		break;
 	// ** GLdouble-valued functions
 	case 70:
 		{
-			PFNGLVERTEXATTRIB1DPROC f = (PFNGLVERTEXATTRIB1DPROC)
-				GLUtils::getProcAddress("glVertexAttrib1d");
-			f(index, v[0]);
+			glVertexAttrib1d(index, v[0]);
 			COPY1(refOut, v);
 		}
 		break;
 	case 71:
 		{
-			PFNGLVERTEXATTRIB2DPROC f = (PFNGLVERTEXATTRIB2DPROC)
-				GLUtils::getProcAddress("glVertexAttrib2d");
-			f(index, v[0], v[1]);
+			glVertexAttrib2d(index, v[0], v[1]);
 			COPY2(refOut, v);
 		}
 		break;
 	case 72:
 		{
-			PFNGLVERTEXATTRIB3DPROC f = (PFNGLVERTEXATTRIB3DPROC)
-				GLUtils::getProcAddress("glVertexAttrib3d");
-			f(index, v[0], v[1], v[2]);
+			glVertexAttrib3d(index, v[0], v[1], v[2]);
 			COPY3(refOut, v);
 		}
 		break;
 	case 73:
 		{
-			PFNGLVERTEXATTRIB4DPROC f = (PFNGLVERTEXATTRIB4DPROC)
-				GLUtils::getProcAddress("glVertexAttrib4d");
-			f(index, v[0], v[1], v[2], v[3]);
+			glVertexAttrib4d(index, v[0], v[1], v[2], v[3]);
 			COPY4(refOut, v);
 		}
 		break;
 	case 74:
 		{
-			PFNGLVERTEXATTRIB1DVPROC f = (PFNGLVERTEXATTRIB1DVPROC)
-				GLUtils::getProcAddress("glVertexAttrib1dv");
 			GLdouble d[1];
 			d[0] = v[0];
-			f(index, d);
+			glVertexAttrib1dv(index, d);
 			COPY1(refOut, v);
 		}
 		break;
 	case 75:
 		{
-			PFNGLVERTEXATTRIB2DVPROC f = (PFNGLVERTEXATTRIB2DVPROC)
-				GLUtils::getProcAddress("glVertexAttrib2dv");
 			GLdouble d[2];
 			d[0] = v[0];
 			d[1] = v[1];
-			f(index, d);
+			glVertexAttrib2dv(index, d);
 			COPY2(refOut, v);
 		}
 		break;
 	case 76:
 		{
-			PFNGLVERTEXATTRIB3DVPROC f = (PFNGLVERTEXATTRIB3DVPROC)
-				GLUtils::getProcAddress("glVertexAttrib3dv");
 			GLdouble d[3];
 			d[0] = v[0];
 			d[1] = v[1];
 			d[2] = v[2];
-			f(index, d);
+			glVertexAttrib3dv(index, d);
 			COPY3(refOut, v);
 		}
 		break;
 	case 77:
 		{
-			PFNGLVERTEXATTRIB4DVPROC f = (PFNGLVERTEXATTRIB4DVPROC)
-				GLUtils::getProcAddress("glVertexAttrib4dv");
 			GLdouble d[4];
 			d[0] = v[0];
 			d[1] = v[1];
 			d[2] = v[2];
 			d[3] = v[3];
-			f(index, d);
+			glVertexAttrib4dv(index, d);
 			COPY4(refOut, v);
 		}
 		break;
 	// ** GLshort-valued functions
 	case 78:
 		{
-			PFNGLVERTEXATTRIB1SPROC f = (PFNGLVERTEXATTRIB1SPROC)
-				GLUtils::getProcAddress("glVertexAttrib1s");
-			f(index, (GLshort) v[0]);
+			glVertexAttrib1s(index, (GLshort) v[0]);
 			refOut[0] = (GLfloat) (GLshort) v[0];
 			refOut[1] = 0.0F;
 			refOut[2] = 0.0F;
@@ -1029,9 +869,7 @@ SetAttrib(GLuint index, const GLfloat v[4], GLuint funcIndex, GLfloat refOut[4])
 		break;
 	case 79:
 		{
-			PFNGLVERTEXATTRIB2SPROC f = (PFNGLVERTEXATTRIB2SPROC)
-				GLUtils::getProcAddress("glVertexAttrib2s");
-			f(index, (GLshort) v[0], (GLshort) v[1]);
+			glVertexAttrib2s(index, (GLshort) v[0], (GLshort) v[1]);
 			refOut[0] = (GLfloat) (GLshort) v[0];
 			refOut[1] = (GLfloat) (GLshort) v[1];
 			refOut[2] = 0.0F;
@@ -1040,9 +878,7 @@ SetAttrib(GLuint index, const GLfloat v[4], GLuint funcIndex, GLfloat refOut[4])
 		break;
 	case 80:
 		{
-			PFNGLVERTEXATTRIB3SPROC f = (PFNGLVERTEXATTRIB3SPROC)
-				GLUtils::getProcAddress("glVertexAttrib3s");
-			f(index, (GLshort) v[0], (GLshort) v[1], (GLshort) v[2]);
+			glVertexAttrib3s(index, (GLshort) v[0], (GLshort) v[1], (GLshort) v[2]);
 			refOut[0] = (GLfloat) (GLshort) v[0];
 			refOut[1] = (GLfloat) (GLshort) v[1];
 			refOut[2] = (GLfloat) (GLshort) v[2];
@@ -1051,9 +887,7 @@ SetAttrib(GLuint index, const GLfloat v[4], GLuint funcIndex, GLfloat refOut[4])
 		break;
 	case 81:
 		{
-			PFNGLVERTEXATTRIB4SPROC f = (PFNGLVERTEXATTRIB4SPROC)
-				GLUtils::getProcAddress("glVertexAttrib4s");
-			f(index, (GLshort) v[0], (GLshort) v[1], (GLshort) v[2], (GLshort) v[3]);
+			glVertexAttrib4s(index, (GLshort) v[0], (GLshort) v[1], (GLshort) v[2], (GLshort) v[3]);
 			refOut[0] = (GLfloat) (GLshort) v[0];
 			refOut[1] = (GLfloat) (GLshort) v[1];
 			refOut[2] = (GLfloat) (GLshort) v[2];
@@ -1062,11 +896,9 @@ SetAttrib(GLuint index, const GLfloat v[4], GLuint funcIndex, GLfloat refOut[4])
 		break;
 	case 82:
 		{
-			PFNGLVERTEXATTRIB1SVPROC f = (PFNGLVERTEXATTRIB1SVPROC)
-				GLUtils::getProcAddress("glVertexAttrib1sv");
 			GLshort s[1];
 			s[0] = (GLshort) v[0];
-			f(index, s);
+			glVertexAttrib1sv(index, s);
 			refOut[0] = (GLfloat) (GLshort) v[0];
 			refOut[1] = 0.0F;
 			refOut[2] = 0.0F;
@@ -1075,12 +907,10 @@ SetAttrib(GLuint index, const GLfloat v[4], GLuint funcIndex, GLfloat refOut[4])
 		break;
 	case 83:
 		{
-			PFNGLVERTEXATTRIB2SVPROC f = (PFNGLVERTEXATTRIB2SVPROC)
-				GLUtils::getProcAddress("glVertexAttrib2sv");
 			GLshort s[2];
 			s[0] = (GLshort) v[0];
 			s[1] = (GLshort) v[1];
-			f(index, s);
+			glVertexAttrib2sv(index, s);
 			refOut[0] = (GLfloat) (GLshort) v[0];
 			refOut[1] = (GLfloat) (GLshort) v[1];
 			refOut[2] = 0.0F;
@@ -1089,13 +919,11 @@ SetAttrib(GLuint index, const GLfloat v[4], GLuint funcIndex, GLfloat refOut[4])
 		break;
 	case 84:
 		{
-			PFNGLVERTEXATTRIB3SVPROC f = (PFNGLVERTEXATTRIB3SVPROC)
-				GLUtils::getProcAddress("glVertexAttrib3sv");
 			GLshort s[3];
 			s[0] = (GLshort) v[0];
 			s[1] = (GLshort) v[1];
 			s[2] = (GLshort) v[2];
-			f(index, s);
+			glVertexAttrib3sv(index, s);
 			refOut[0] = (GLfloat) (GLshort) v[0];
 			refOut[1] = (GLfloat) (GLshort) v[1];
 			refOut[2] = (GLfloat) (GLshort) v[2];
@@ -1104,14 +932,12 @@ SetAttrib(GLuint index, const GLfloat v[4], GLuint funcIndex, GLfloat refOut[4])
 		break;
 	case 85:
 		{
-			PFNGLVERTEXATTRIB4SVPROC f = (PFNGLVERTEXATTRIB4SVPROC)
-				GLUtils::getProcAddress("glVertexAttrib4sv");
 			GLshort s[4];
 			s[0] = (GLshort) v[0];
 			s[1] = (GLshort) v[1];
 			s[2] = (GLshort) v[2];
 			s[3] = (GLshort) v[3];
-			f(index, s);
+			glVertexAttrib4sv(index, s);
 			refOut[0] = (GLfloat) (GLshort) v[0];
 			refOut[1] = (GLfloat) (GLshort) v[1];
 			refOut[2] = (GLfloat) (GLshort) v[2];
@@ -1120,43 +946,35 @@ SetAttrib(GLuint index, const GLfloat v[4], GLuint funcIndex, GLfloat refOut[4])
 		break;
 	case 86:
 		{
-			PFNGLVERTEXATTRIB4NSVPROC f = (PFNGLVERTEXATTRIB4NSVPROC)
-				GLUtils::getProcAddress("glVertexAttrib4Nsv");
 			GLshort s[4];
 			for (int i = 0; i < 4; i++)
 				s[i] = FLOAT_TO_SHORT(v[i]);
-			f(index, s);
+			glVertexAttrib4Nsv(index, s);
 			COPY4(refOut, v);
 		}
 		break;
 	// ** GLubyte-valued functions
 	case 87:
 		{
-			PFNGLVERTEXATTRIB4NUBPROC f = (PFNGLVERTEXATTRIB4NUBPROC)
-				GLUtils::getProcAddress("glVertexAttrib4Nub");
-			f(index, FLOAT_TO_UBYTE(v[0]), FLOAT_TO_UBYTE(v[1]), FLOAT_TO_UBYTE(v[2]), FLOAT_TO_UBYTE(v[3]));
+			glVertexAttrib4Nub(index, FLOAT_TO_UBYTE(v[0]), FLOAT_TO_UBYTE(v[1]), FLOAT_TO_UBYTE(v[2]), FLOAT_TO_UBYTE(v[3]));
 			COPY4(refOut, v);
 		}
 		break;
 	case 88:
 		{
-			PFNGLVERTEXATTRIB4NUBVPROC f = (PFNGLVERTEXATTRIB4NUBVPROC)
-				GLUtils::getProcAddress("glVertexAttrib4Nubv");
 			GLubyte ub[4];
 			for (int i = 0; i < 4; i++ )
 			   ub[i] = FLOAT_TO_UBYTE(v[i]);
-			f(index, ub);
+			glVertexAttrib4Nubv(index, ub);
 			COPY4(refOut, v);
 		}
 		break;
 	case 89:
 		{
-			PFNGLVERTEXATTRIB4UBVPROC f = (PFNGLVERTEXATTRIB4UBVPROC)
-				GLUtils::getProcAddress("glVertexAttrib4ubv");
 			GLubyte ub[4];
 			for (int i = 0; i < 4; i++ )
 			   ub[i] = (GLubyte) v[i];
-			f(index, ub);
+			glVertexAttrib4ubv(index, ub);
 			refOut[0] = (GLfloat) (GLubyte) v[0];
 			refOut[1] = (GLfloat) (GLubyte) v[1];
 			refOut[2] = (GLfloat) (GLubyte) v[2];
@@ -1166,23 +984,19 @@ SetAttrib(GLuint index, const GLfloat v[4], GLuint funcIndex, GLfloat refOut[4])
 	// ** GLbyte-valued functions
 	case 90:
 		{
-			PFNGLVERTEXATTRIB4NBVPROC f = (PFNGLVERTEXATTRIB4NBVPROC)
-				GLUtils::getProcAddress("glVertexAttrib4Nbv");
 			GLbyte b[4];
 			for (int i = 0; i < 4; i++ )
 			   b[i] = FLOAT_TO_BYTE(v[i]);
-			f(index, b);
+			glVertexAttrib4Nbv(index, b);
 			COPY4(refOut, v);
 		}
 		break;
 	case 91:
 		{
-			PFNGLVERTEXATTRIB4BVPROC f = (PFNGLVERTEXATTRIB4BVPROC)
-				GLUtils::getProcAddress("glVertexAttrib4bv");
 			GLbyte b[4];
 			for (int i = 0; i < 4; i++ )
 			   b[i] = (GLbyte) v[i];
-			f(index, b);
+			glVertexAttrib4bv(index, b);
 			refOut[0] = (GLfloat) (GLbyte) v[0];
 			refOut[1] = (GLfloat) (GLbyte) v[1];
 			refOut[2] = (GLfloat) (GLbyte) v[2];
@@ -1192,23 +1006,19 @@ SetAttrib(GLuint index, const GLfloat v[4], GLuint funcIndex, GLfloat refOut[4])
 	// ** GLint-valued functions
 	case 92:
 		{
-			PFNGLVERTEXATTRIB4NIVPROC f = (PFNGLVERTEXATTRIB4NIVPROC)
-				GLUtils::getProcAddress("glVertexAttrib4Niv");
 			GLint iv[4];
 			for (int i = 0; i < 4; i++ )
 			   iv[i] = FLOAT_TO_INT(v[i]);
-			f(index, iv);
+			glVertexAttrib4Niv(index, iv);
 			COPY4(refOut, v);
 		}
 		break;
 	case 93:
 		{
-			PFNGLVERTEXATTRIB4IVPROC f = (PFNGLVERTEXATTRIB4IVPROC)
-				GLUtils::getProcAddress("glVertexAttrib4iv");
 			GLint iv[4];
 			for (int i = 0; i < 4; i++ )
 			   iv[i] = (GLint) v[i];
-			f(index, iv);
+			glVertexAttrib4iv(index, iv);
 			refOut[0] = (GLfloat) (GLint) v[0];
 			refOut[1] = (GLfloat) (GLint) v[1];
 			refOut[2] = (GLfloat) (GLint) v[2];
@@ -1218,23 +1028,19 @@ SetAttrib(GLuint index, const GLfloat v[4], GLuint funcIndex, GLfloat refOut[4])
 	// ** GLuint-valued functions
 	case 94:
 		{
-			PFNGLVERTEXATTRIB4NUIVPROC f = (PFNGLVERTEXATTRIB4NUIVPROC)
-				GLUtils::getProcAddress("glVertexAttrib4Nuiv");
 			GLuint ui[4];
 			for (int i = 0; i < 4; i++ )
 			   ui[i] = FLOAT_TO_UINT(v[i]);
-			f(index, ui);
+			glVertexAttrib4Nuiv(index, ui);
 			COPY4(refOut, v);
 		}
 		break;
 	case 95:
 		{
-			PFNGLVERTEXATTRIB4UIVPROC f = (PFNGLVERTEXATTRIB4UIVPROC)
-				GLUtils::getProcAddress("glVertexAttrib4uiv");
 			GLuint ui[4];
 			for (int i = 0; i < 4; i++ )
 			   ui[i] = (GLint) v[i];
-			f(index, ui);
+			glVertexAttrib4uiv(index, ui);
 			refOut[0] = (GLfloat) (GLint) v[0];
 			refOut[1] = (GLfloat) (GLint) v[1];
 			refOut[2] = (GLfloat) (GLint) v[2];
@@ -1244,23 +1050,19 @@ SetAttrib(GLuint index, const GLfloat v[4], GLuint funcIndex, GLfloat refOut[4])
 	// ** GLushort-valued functions
 	case 96:
 		{
-			PFNGLVERTEXATTRIB4NUSVPROC f = (PFNGLVERTEXATTRIB4NUSVPROC)
-				GLUtils::getProcAddress("glVertexAttrib4Nusv");
 			GLushort us[4];
 			for (int i = 0; i < 4; i++ )
 			   us[i] = FLOAT_TO_USHORT(v[i]);
-			f(index, us);
+			glVertexAttrib4Nusv(index, us);
 			COPY4(refOut, v);
 		}
 		break;
 	case 97:
 		{
-			PFNGLVERTEXATTRIB4USVPROC f = (PFNGLVERTEXATTRIB4USVPROC)
-				GLUtils::getProcAddress("glVertexAttrib4usv");
 			GLushort us[4];
 			for (int i = 0; i < 4; i++ )
 			   us[i] = (GLint) v[i];
-			f(index, us);
+			glVertexAttrib4usv(index, us);
 			refOut[0] = (GLfloat) (GLint) v[0];
 			refOut[1] = (GLfloat) (GLint) v[1];
 			refOut[2] = (GLfloat) (GLint) v[2];
@@ -1317,7 +1119,6 @@ void VertAttribTest::FailMessage(VertAttribResult &r, const char *msg,
 bool
 VertAttribTest::TestAttribs(VertAttribResult &r,
 			    int attribFunc,
-			    PFNGLGETVERTEXATTRIBFVARBPROC getAttribfv,
 			    Aliasing aliasing,
 			    int numAttribs)
 {
@@ -1361,7 +1162,7 @@ VertAttribTest::TestAttribs(VertAttribResult &r,
 		for (int i = 1; i < numAttribs; i++) {
 			const GLfloat *expected = refOut[i];
 			GLfloat v[4];
-			getAttribfv(i, GL_CURRENT_VERTEX_ATTRIB_ARB, v);
+			glGetVertexAttribfvNV(i, GL_CURRENT_VERTEX_ATTRIB_ARB, v);
 			if (!NearlyEqual(v, expected)) {
 				char msg[1000];
 				sprintf(msg, "Vertex Attribute %d is (%g, %g, %g, %g) but expected (%g, %g, %g, %g)",
@@ -1421,18 +1222,14 @@ VertAttribTest::TestNVfuncs(VertAttribResult &r)
 {
 	bool result = true;
 #ifdef GL_NV_vertex_program
-	PFNGLGETVERTEXATTRIBFVNVPROC getAttribfv;
 	const GLint numAttribs = 16;
 	const Aliasing aliasing = REQUIRED;
 
-	getAttribfv = (PFNGLGETVERTEXATTRIBFVNVPROC) GLUtils::getProcAddress("glGetVertexAttribfvNV");
-	assert(getAttribfv);
-
 	r.numNVtested = 0;
 
 	for (int attribFunc = 0; attribFunc < NUM_NV_ATTRIB_FUNCS; attribFunc++) {
 		bool b;
-		b = TestAttribs(r, attribFunc, getAttribfv, aliasing, numAttribs);
+		b = TestAttribs(r, attribFunc, aliasing, numAttribs);
 		if (!b)
 			result = false;
 		r.numNVtested++;
@@ -1451,12 +1248,8 @@ VertAttribTest::TestARBfuncs(VertAttribResult &r, bool shader)
 {
 	bool result = true;
 #if defined(GL_ARB_vertex_program) || defined(GL_ARB_vertex_shader)
-	PFNGLGETVERTEXATTRIBFVARBPROC getAttribfv;
 	GLint numAttribs;
 
-	getAttribfv = (PFNGLGETVERTEXATTRIBFVARBPROC) GLUtils::getProcAddress("glGetVertexAttribfvARB");
-	assert(getAttribfv);
-
 	glGetIntegerv(GL_MAX_VERTEX_ATTRIBS_ARB, &numAttribs);
 	assert(numAttribs > 0);
 
@@ -1468,7 +1261,7 @@ VertAttribTest::TestARBfuncs(VertAttribResult &r, bool shader)
 		for (int i = 0; i < NUM_ARB_ATTRIB_FUNCS; i++) {
 			int attribFunc = NUM_NV_ATTRIB_FUNCS + i;
 			bool b;
-			b = TestAttribs(r, attribFunc, getAttribfv, aliasing, numAttribs);
+			b = TestAttribs(r, attribFunc, aliasing, numAttribs);
 			if (!b)
 				result = false;
 			r.numARBtested++;
@@ -1495,7 +1288,7 @@ VertAttribTest::TestARBfuncs(VertAttribResult &r, bool shader)
 		for (int i = 0; i < NUM_ARB_ATTRIB_FUNCS; i++) {
 			int attribFunc = NUM_NV_ATTRIB_FUNCS + i;
 			bool b;
-			b = TestAttribs(r, attribFunc, getAttribfv, aliasing, numAttribs);
+			b = TestAttribs(r, attribFunc, aliasing, numAttribs);
 			if (!b)
 				result = false;
 			r.numARBtested++;
@@ -1515,13 +1308,9 @@ VertAttribTest::Test20funcs(VertAttribResult &r)
 {
 	bool result = true;
 #ifdef GL_VERSION_2_0
-	PFNGLGETVERTEXATTRIBFVPROC getAttribfv;
 	GLint numAttribs;
 	const Aliasing aliasing = DISALLOWED;
 
-	getAttribfv = (PFNGLGETVERTEXATTRIBFVPROC) GLUtils::getProcAddress("glGetVertexAttribfv");
-	assert(getAttribfv);
-
 	glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, &numAttribs);
 	assert(numAttribs > 0);
 
@@ -1530,7 +1319,7 @@ VertAttribTest::Test20funcs(VertAttribResult &r)
 	for (int i = 0; i < NUM_2_0_ATTRIB_FUNCS; i++) {
 		int attribFunc = NUM_NV_ATTRIB_FUNCS + NUM_ARB_ATTRIB_FUNCS+ i;
 		bool b;
-		b = TestAttribs(r, attribFunc, getAttribfv, aliasing, numAttribs);
+		b = TestAttribs(r, attribFunc, aliasing, numAttribs);
 		if (!b)
 			result = false;
 		r.num20tested++;
diff --git a/tests/glean/tvertattrib.h b/tests/glean/tvertattrib.h
index 1eb4b6e..ba69640 100644
--- a/tests/glean/tvertattrib.h
+++ b/tests/glean/tvertattrib.h
@@ -83,7 +83,6 @@ private:
 			 const char *ext, int dlistMode) const;
 	bool TestAttribs(VertAttribResult &r,
 			 int attribFunc,
-			 PFNGLGETVERTEXATTRIBFVARBPROC getAttribfv,
 			 Aliasing aliasing,
 			 int numAttribs);
 	bool TestNVfuncs(VertAttribResult &r);
diff --git a/tests/glean/tvertprog1.cpp b/tests/glean/tvertprog1.cpp
index 4d3cccc..68ad828 100644
--- a/tests/glean/tvertprog1.cpp
+++ b/tests/glean/tvertprog1.cpp
@@ -41,14 +41,6 @@
 
 namespace GLEAN {
 
-
-static PFNGLPROGRAMLOCALPARAMETER4FVARBPROC glProgramLocalParameter4fvARB_func;
-static PFNGLGENPROGRAMSARBPROC glGenProgramsARB_func;
-static PFNGLPROGRAMSTRINGARBPROC glProgramStringARB_func;
-static PFNGLBINDPROGRAMARBPROC glBindProgramARB_func;
-static PFNGLISPROGRAMARBPROC glIsProgramARB_func;
-static PFNGLDELETEPROGRAMSARBPROC glDeleteProgramsARB_func;
-
 static GLuint progID;
 
 
@@ -810,35 +802,16 @@ VertexProgramTest::setup(void)
 	       InfNan[0], InfNan[1], InfNan[2], InfNan[3]);
 	*/
 
-	// get function pointers
-	glProgramLocalParameter4fvARB_func = (PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) GLUtils::getProcAddress("glProgramLocalParameter4fvARB");
-	assert(glProgramLocalParameter4fvARB_func);
-
-	glGenProgramsARB_func = (PFNGLGENPROGRAMSARBPROC) GLUtils::getProcAddress("glGenProgramsARB");
-	assert(glGenProgramsARB_func);
-
-	glProgramStringARB_func = (PFNGLPROGRAMSTRINGARBPROC) GLUtils::getProcAddress("glProgramStringARB");
-	assert(glProgramStringARB_func);
-
-	glBindProgramARB_func = (PFNGLBINDPROGRAMARBPROC) GLUtils::getProcAddress("glBindProgramARB");
-	assert(glBindProgramARB_func);
-
-	glIsProgramARB_func = (PFNGLISPROGRAMARBPROC) GLUtils::getProcAddress("glIsProgramARB");
-	assert(glIsProgramARB_func);
-
-	glDeleteProgramsARB_func = (PFNGLDELETEPROGRAMSARBPROC) GLUtils::getProcAddress("glDeleteProgramsARB");
-	assert(glDeleteProgramsARB_func);
-
-	glGenProgramsARB_func(1, &progID);
-	glBindProgramARB_func(GL_VERTEX_PROGRAM_ARB, progID);
+	glGenProgramsARB(1, &progID);
+	glBindProgramARB(GL_VERTEX_PROGRAM_ARB, progID);
 	glEnable(GL_VERTEX_PROGRAM_ARB);
 
 	// load program inputs
 	glColor4fv(VertColor);
-	glProgramLocalParameter4fvARB_func(GL_VERTEX_PROGRAM_ARB, 0, Param0);
-	glProgramLocalParameter4fvARB_func(GL_VERTEX_PROGRAM_ARB, 1, Param1);
-	glProgramLocalParameter4fvARB_func(GL_VERTEX_PROGRAM_ARB, 2, Param2);
-	glProgramLocalParameter4fvARB_func(GL_VERTEX_PROGRAM_ARB, 9, InfNan);
+	glProgramLocalParameter4fvARB(GL_VERTEX_PROGRAM_ARB, 0, Param0);
+	glProgramLocalParameter4fvARB(GL_VERTEX_PROGRAM_ARB, 1, Param1);
+	glProgramLocalParameter4fvARB(GL_VERTEX_PROGRAM_ARB, 2, Param2);
+	glProgramLocalParameter4fvARB(GL_VERTEX_PROGRAM_ARB, 9, InfNan);
 
 	// other GL state
 	glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, Ambient);
@@ -952,10 +925,10 @@ VertexProgramTest::testProgram(const VertexProgram &p)
 {
 	const GLfloat r = 0.25;
 
-	glProgramStringARB_func(GL_VERTEX_PROGRAM_ARB,
-				GL_PROGRAM_FORMAT_ASCII_ARB,
-				strlen(p.progString),
-				(const GLubyte *) p.progString);
+	glProgramStringARB(GL_VERTEX_PROGRAM_ARB,
+			   GL_PROGRAM_FORMAT_ASCII_ARB,
+			   strlen(p.progString),
+			   (const GLubyte *) p.progString);
 
 	GLenum err = glGetError();
 	if (err) {
@@ -1027,7 +1000,7 @@ VertexProgramTest::testBadProgram(MultiTestResult &result)
 			"NOTANOPCODE;\n"
 			"MOV result.position, vertex.position;\n";
 
-		glProgramStringARB_func(GL_VERTEX_PROGRAM_ARB,
+		glProgramStringARB(GL_VERTEX_PROGRAM_ARB,
 					GL_PROGRAM_FORMAT_ASCII_ARB,
 					strlen(badprog),
 					(const GLubyte *) badprog);
@@ -1052,7 +1025,7 @@ VertexProgramTest::testBadProgram(MultiTestResult &result)
 	 * with an invalid (non-existant in this case) program.
 	 */
 	{
-		glBindProgramARB_func(GL_VERTEX_PROGRAM_ARB, 99);
+		glBindProgramARB(GL_VERTEX_PROGRAM_ARB, 99);
 
 		glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 		glBegin(GL_POLYGON);
-- 
1.8.5.3



More information about the Piglit mailing list