#define GL_GLEXT_PROTOTYPES
#include <GL/glext.h>
+#ifdef _WIN32
+
+PFNGLGENBUFFERSARBPROC pglGenBuffers = 0;
+PFNGLBINDBUFFERARBPROC pglBindBuffer = 0;
+PFNGLBUFFERDATAARBPROC pglBufferData = 0;
+PFNGLBUFFERSUBDATAARBPROC pglBufferSubData = 0;
+PFNGLDELETEBUFFERSARBPROC pglDeleteBuffers = 0;
+PFNGLGETBUFFERPARAMETERIVARBPROC pglGetBufferParameteriv = 0;
+PFNGLMAPBUFFERARBPROC pglMapBuffer = 0;
+PFNGLUNMAPBUFFERARBPROC pglUnmapBuffer = 0;
+
+#define glGenBuffers pglGenBuffers
+#define glBindBuffer pglBindBuffer
+#define glBufferData pglBufferData
+#define glBufferSubData pglBufferSubData
+#define glDeleteBuffers pglDeleteBuffers
+#define glGetBufferParameteriv pglGetBufferParameteriv
+#define glMapBuffer pglMapBuffer
+#define glUnmapBuffer pglUnmapBuffer
+
+#endif // _WIN32
+
// some definitions for what the polydata has in it
#define CPPLUGINS_VTK_PDM_NORMALS 0x0001
#define CPPLUGINS_VTK_PDM_COLORS 0x0002
renderNeeded &= !this->GetGlobalImmediateModeRendering( );
// Something has changed in the pipeline?
- if(
+ if(
this->GetMTime( ) > this->BuildTime ||
in->GetMTime( ) > this->BuildTime ||
act->GetProperty( )->GetMTime( ) > this->BuildTime ||
if( this->Colors )
{
c = this->Colors;
- if(
- (
+ if(
+ (
this->ScalarMode == VTK_SCALAR_MODE_USE_CELL_DATA ||
this->ScalarMode == VTK_SCALAR_MODE_USE_CELL_FIELD_DATA ||
this->ScalarMode == VTK_SCALAR_MODE_USE_FIELD_DATA ||
if( nPoints == 2 && zResolve )
glDepthRange( zRes, 1. );
- glDrawElements(
+ glDrawElements(
mode, nPoints, this->IndexElementType, ( GLuint* )( 0 ) + accum
);
accum += nPoints;
if( input == NULL )
return( false );
+#ifdef _WIN32
+ // Get pointers to GL functions
+ glGenBuffers = reinterpret_cast< PFNGLGENBUFFERSARBPROC >
+ ( wglGetProcAddress( "glGenBuffers" ) );
+ glBindBuffer = reinterpret_cast< PFNGLBINDBUFFERARBPROC >
+ ( wglGetProcAddress( "glBindBuffer" ) );
+ glBufferData = reinterpret_cast< PFNGLBUFFERDATAARBPROC >
+ ( wglGetProcAddress( "glBufferData" ) );
+ glBufferSubData = reinterpret_cast< PFNGLBUFFERSUBDATAARBPROC >
+ ( wglGetProcAddress( "glBufferSubData" ) );
+ glDeleteBuffers = reinterpret_cast< PFNGLDELETEBUFFERSARBPROC >
+ ( wglGetProcAddress( "glDeleteBuffers" ) );
+ glGetBufferParameteriv =
+ reinterpret_cast< PFNGLGETBUFFERPARAMETERIVARBPROC >
+ ( wglGetProcAddress( "glGetBufferParameteriv" ) );
+ glMapBuffer = reinterpret_cast< PFNGLMAPBUFFERARBPROC >
+ ( wglGetProcAddress( "glMapBuffer" ) );
+ glUnmapBuffer = reinterpret_cast< PFNGLUNMAPBUFFERARBPROC >
+ ( wglGetProcAddress( "glUnmapBuffer" ) );
+
+ // Check once again VBO extension
+ if(
+ glGenBuffers != NULL &&
+ glBindBuffer != NULL &&
+ glBufferData != NULL &&
+ glBufferSubData != NULL &&
+ glMapBuffer != NULL &&
+ glUnmapBuffer != NULL &&
+ glDeleteBuffers != NULL &&
+ glGetBufferParameteriv != NULL
+ )
+ this->VBOSupported = true;
+ else
+ this->VBOSupported = false;
+#else // _WIN32
// Check if VBO ( Vertex Buffer Object ) is supported
std::string str = ( const char* )( glGetString( GL_EXTENSIONS ) );
this->VBOSupported =
( str.find( "GL_ARB_vertex_buffer_object" ) != std::string::npos );
+#endif // _WIN32
if( this->VBOSupported )
{