Move the "Mesa hack" from GLee.c into screen.c:screenInitialise()

There we can check the GL_RENDERER string for more fine control. Currently it
is enabled when the string starts with "Mesa", so it doesn't affect any other
drivers. It might need more checks if new Mesa versions break this.
Fixes #608.

git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7694 4a71c877-e1ca-e34f-864e-861f7616d084
master
Christian Ohm 2009-06-08 14:06:23 +00:00 committed by Git SVN Gateway
parent fe7b8fc515
commit b9b1a4bac7
2 changed files with 21 additions and 17 deletions

View File

@ -11999,22 +11999,6 @@ GLuint __GLeeLink_GL_ARB_vertex_buffer_object(void)
if ((GLeeFuncPtr_glUnmapBufferARB = (GLEEPFNGLUNMAPBUFFERARBPROC) __GLeeGetProcAddress("glUnmapBufferARB"))!=0) nLinked++;
if ((GLeeFuncPtr_glGetBufferParameterivARB = (GLEEPFNGLGETBUFFERPARAMETERIVARBPROC) __GLeeGetProcAddress("glGetBufferParameterivARB"))!=0) nLinked++;
if ((GLeeFuncPtr_glGetBufferPointervARB = (GLEEPFNGLGETBUFFERPOINTERVARBPROC) __GLeeGetProcAddress("glGetBufferPointervARB"))!=0) nLinked++;
// NOTE: this hack causes issues with MAC OS
// HACK: work around for drivers that report VBO, but don't have full openGL 1.5 implementation.
#if defined(WZ_OS_UNIX) && !defined(WZ_OS_MAC)
GLeeFuncPtr_glBindBuffer = GLeeFuncPtr_glBindBufferARB;
GLeeFuncPtr_glDeleteBuffers = GLeeFuncPtr_glDeleteBuffersARB;
GLeeFuncPtr_glGenBuffers = GLeeFuncPtr_glGenBuffersARB;
GLeeFuncPtr_glIsBuffer = GLeeFuncPtr_glIsBufferARB;
GLeeFuncPtr_glBufferData = GLeeFuncPtr_glBufferDataARB;
GLeeFuncPtr_glBufferSubData = GLeeFuncPtr_glBufferSubDataARB;
GLeeFuncPtr_glGetBufferSubData = GLeeFuncPtr_glGetBufferSubDataARB;
GLeeFuncPtr_glMapBuffer = GLeeFuncPtr_glMapBufferARB;
GLeeFuncPtr_glUnmapBuffer = GLeeFuncPtr_glUnmapBufferARB;
GLeeFuncPtr_glGetBufferParameteriv = GLeeFuncPtr_glGetBufferParameterivARB;
GLeeFuncPtr_glGetBufferPointerv = GLeeFuncPtr_glGetBufferPointervARB;
#endif
#endif
if (nLinked==11) return GLEE_LINK_COMPLETE;
if (nLinked==0) return GLEE_LINK_FAIL;

View File

@ -171,7 +171,6 @@ BOOL screenInitialise(
{
debug( LOG_ERROR, "OpenGL initialization did not give double buffering!" );
}
// Note that no initialisation of GLee is required, since this is handled automatically.
/* Dump information about OpenGL implementation to the console */
debug(LOG_3D, "OpenGL Vendor : %s", glGetString(GL_VENDOR));
@ -193,6 +192,27 @@ BOOL screenInitialise(
debug(LOG_3D, " * Rectangular texture %s supported.", GLEE_ARB_texture_rectangle ? "is" : "is NOT");
debug(LOG_3D, " * FrameBuffer Object (FBO) %s supported.", GLEE_EXT_framebuffer_object ? "is" : "is NOT");
// Make OpenGL's VBO functions available under the core names for
// implementations that have them only as extensions, namely Mesa.
if (!strncmp((const char *)glGetString(GL_RENDERER), "Masa", 4))
{
debug(LOG_3D, "Using VBO extension functions under the core names.");
// GLee is usually initialized automatically when needed, but
// here it has to be done explicitly.
GLeeInit();
GLeeFuncPtr_glBindBuffer = GLeeFuncPtr_glBindBufferARB;
GLeeFuncPtr_glDeleteBuffers = GLeeFuncPtr_glDeleteBuffersARB;
GLeeFuncPtr_glGenBuffers = GLeeFuncPtr_glGenBuffersARB;
GLeeFuncPtr_glIsBuffer = GLeeFuncPtr_glIsBufferARB;
GLeeFuncPtr_glBufferData = GLeeFuncPtr_glBufferDataARB;
GLeeFuncPtr_glBufferSubData = GLeeFuncPtr_glBufferSubDataARB;
GLeeFuncPtr_glGetBufferSubData = GLeeFuncPtr_glGetBufferSubDataARB;
GLeeFuncPtr_glMapBuffer = GLeeFuncPtr_glMapBufferARB;
GLeeFuncPtr_glUnmapBuffer = GLeeFuncPtr_glUnmapBufferARB;
GLeeFuncPtr_glGetBufferParameteriv = GLeeFuncPtr_glGetBufferParameterivARB;
GLeeFuncPtr_glGetBufferPointerv = GLeeFuncPtr_glGetBufferPointervARB;
}
glViewport(0, 0, width, height);
glMatrixMode(GL_PROJECTION);
glPushMatrix();