]> SALOME platform Git repositories - modules/visu.git/commitdiff
Salome HOME
Using dlopen() and dlsym() for loading OpenGL shader functions
authorouv <ouv@opencascade.com>
Mon, 5 Sep 2005 04:58:57 +0000 (04:58 +0000)
committerouv <ouv@opencascade.com>
Mon, 5 Sep 2005 04:58:57 +0000 (04:58 +0000)
src/PIPELINE/VISU_OpenGLPointSpriteMapper.cxx

index 4be6deb00eadc08e4ddf55a2fd36eb795a7a6c72..f3bf63c9892fe80883bfa472f940144d48e1da09 100755 (executable)
@@ -58,12 +58,12 @@ extern "C" {
 }
 #endif
 
+#include <dlfcn.h>
+
 #include <stdio.h>
 #include <cmath>
 #include <string>
 
-#define ARB_PROGRAM
-
 #ifndef VTK_IMPLEMENT_MESA_CXX
 vtkCxxRevisionMacro(VISU_OpenGLPointSpriteMapper, "$Revision$");
 vtkStandardNewMacro(VISU_OpenGLPointSpriteMapper);
@@ -226,9 +226,8 @@ void initShader()
 
   glProgramStringARB( GL_VERTEX_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB,
                      size, shader );
-
   /*
-  cout << "Shader :" << endl;
+  cout << "Shader from " << fileName << endl;
   for( int i = 0; i < size; i++ )
     cout << shader[i];
   cout << endl;
@@ -291,11 +290,21 @@ void VISU_OpenGLPointSpriteMapper::InitializeExtensions()
     return;
   }
 
+  void* libHandle = dlopen( "libGL.so", RTLD_NOW );
+
+  glGenProgramsARB           = (PFNGLGENPROGRAMSARBPROC)dlsym( libHandle, "glGenProgramsARB" );
+  glDeleteProgramsARB        = (PFNGLDELETEPROGRAMSARBPROC)dlsym( libHandle, "glDeleteProgramsARB");
+  glBindProgramARB           = (PFNGLBINDPROGRAMARBPROC)dlsym( libHandle, "glBindProgramARB");
+  glProgramStringARB         = (PFNGLPROGRAMSTRINGARBPROC)dlsym( libHandle, "glProgramStringARB");
+  glProgramEnvParameter4fARB = (PFNGLPROGRAMENVPARAMETER4FARBPROC)dlsym( libHandle, "glProgramEnvParameter4fARB");
+
+  /*
   glGenProgramsARB           = (PFNGLGENPROGRAMSARBPROC)glXGetProcAddressARB((const GLubyte*)"glGenProgramsARB");
   glDeleteProgramsARB        = (PFNGLDELETEPROGRAMSARBPROC)glXGetProcAddressARB((const GLubyte*)"glDeleteProgramsARB");
   glBindProgramARB           = (PFNGLBINDPROGRAMARBPROC)glXGetProcAddressARB((const GLubyte*)"glBindProgramARB");
   glProgramStringARB         = (PFNGLPROGRAMSTRINGARBPROC)glXGetProcAddressARB((const GLubyte*)"glProgramStringARB");
   glProgramEnvParameter4fARB = (PFNGLPROGRAMENVPARAMETER4FARBPROC)glXGetProcAddressARB((const GLubyte*)"glProgramEnvParameter4fARB");
+  */
 
   initShader();
   setShaderConstants();
@@ -869,7 +878,7 @@ void VISU_OpenGLPointSpriteMapper::DrawPoints(int idx,
 
       glEnable( GL_VERTEX_PROGRAM_ARB );
 
-      glColor4f( 1.0, 1.0, 1.0, 1.0 );
+      //glColor4f( 1.0, 1.0, 1.0, 1.0 );
 
       glBindProgramARB( GL_VERTEX_PROGRAM_ARB, shaderId );