#include <cmath>
#include <string>
+#ifndef GLX_GLXEXT_LEGACY
+#define GLX_GLXEXT_LEGACY
+#endif
#include <GL/glx.h>
#ifndef VTK_IMPLEMENT_MESA_CXX
bool InitializeARB()
{
- //void* OpenGLLibrary = dlopen( "libGL.so", RTLD_LAZY );
-
vglShaderSourceARB = (PFNGLSHADERSOURCEARBPROC)glXGetProcAddressARB( (const GLubyte*)"glShaderSourceARB" );
+ if( !vglShaderSourceARB )
+ return false;
+
vglCreateShaderObjectARB = (PFNGLCREATESHADEROBJECTARBPROC)glXGetProcAddressARB( (const GLubyte*)"glCreateShaderObjectARB" );
+ if( !vglCreateShaderObjectARB )
+ return false;
+
vglCompileShaderARB = (PFNGLCOMPILESHADERARBPROC)glXGetProcAddressARB( (const GLubyte*)"glCompileShaderARB" );
+ if( !vglCompileShaderARB )
+ return false;
+
vglCreateProgramObjectARB = (PFNGLCREATEPROGRAMOBJECTARBPROC)glXGetProcAddressARB( (const GLubyte*)"glCreateProgramObjectARB" );
+ if( !vglCreateProgramObjectARB )
+ return false;
+
vglAttachObjectARB = (PFNGLATTACHOBJECTARBPROC)glXGetProcAddressARB( (const GLubyte*)"glAttachObjectARB" );
+ if( !vglAttachObjectARB )
+ return false;
+
vglLinkProgramARB = (PFNGLLINKPROGRAMARBPROC)glXGetProcAddressARB( (const GLubyte*)"glLinkProgramARB" );
+ if( !vglLinkProgramARB )
+ return false;
+
vglUseProgramObjectARB = (PFNGLUSEPROGRAMOBJECTARBPROC)glXGetProcAddressARB( (const GLubyte*)"glUseProgramObjectARB" );
+ if( !vglUseProgramObjectARB )
+ return false;
+
vglGetObjectParameterivARB = (PFNGLGETOBJECTPARAMETERIVARBPROC)glXGetProcAddressARB( (const GLubyte*)"glGetObjectParameterivARB" );
+ if( !vglGetObjectParameterivARB )
+ return false;
+
vglGetInfoLogARB = (PFNGLGETINFOLOGARBPROC)glXGetProcAddressARB( (const GLubyte*)"glGetInfoLogARB" );
+ if( !vglGetInfoLogARB )
+ return false;
+
vglGetAttribLocationARB = (PFNGLGETATTRIBLOCATIONARBPROC)glXGetProcAddressARB( (const GLubyte*)"glGetAttribLocationARB" );
+ if( !vglGetAttribLocationARB )
+ return false;
+
vglVertexAttrib1fARB = (PFNGLVERTEXATTRIB1FARBPROC)glXGetProcAddressARB( (const GLubyte*)"glVertexAttrib1fARB" );
+ if( !vglVertexAttrib1fARB )
+ return false;
vglGenBuffersARB = (PFNGLGENBUFFERSARBPROC)glXGetProcAddressARB( (const GLubyte*)"glGenBuffersARB" );
+ if( !vglGenBuffersARB )
+ return false;
+
vglBindBufferARB = (PFNGLBINDBUFFERARBPROC)glXGetProcAddressARB( (const GLubyte*)"glBindBufferARB" );
+ if( !vglBindBufferARB )
+ return false;
+
vglBufferDataARB = (PFNGLBUFFERDATAARBPROC)glXGetProcAddressARB( (const GLubyte*)"glBufferDataARB" );
+ if( !vglBufferDataARB )
+ return false;
+
vglDeleteBuffersARB = (PFNGLDELETEBUFFERSARBPROC)glXGetProcAddressARB( (const GLubyte*)"glDeleteBuffersARB" );
+ if( !vglDeleteBuffersARB )
+ return false;
- if( vglShaderSourceARB &&
- vglCreateShaderObjectARB &&
- vglCompileShaderARB &&
- vglCreateProgramObjectARB &&
- vglAttachObjectARB &&
- vglLinkProgramARB &&
- vglUseProgramObjectARB &&
- vglGetObjectParameterivARB &&
- vglGetInfoLogARB &&
- vglGetAttribLocationARB &&
- vglVertexAttrib1fARB &&
- vglGenBuffersARB &&
- vglBindBufferARB &&
- vglBufferDataARB &&
- vglDeleteBuffersARB )
- return true;
-
- return false;
+ return true;
};
static bool IsARBInitialized = InitializeARB();