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-861f7616d084master
parent
fe7b8fc515
commit
b9b1a4bac7
|
@ -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;
|
||||
|
|
|
@ -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();
|
||||
|
|
Loading…
Reference in New Issue