00001 #if !defined(SOGLGLEW_H)
00002 #define SOGLGLEW_H 1
00003
00004 #include <Inventor/sys/port.h>
00005 #include <Inventor/SbBase.h>
00006 #include <Inventor/SoInventorGLEWLibName.h>
00007
00008 #if defined(_WIN32)
00009 # ifndef InventorGLEW_EXPORTS
00010 # ifndef OIV_DISABLE_AUTOLINK
00011 # pragma comment(lib,__INVENTORGLEWLIB)
00012 # endif
00013 # endif
00014 #endif
00015
00016 #ifdef InventorGLEW_EXPORTS
00017 # define INVENTORGLEW_API VC_DLL_EXPORT
00018 #else
00019 # define INVENTORGLEW_API VC_DLL_IMPORT
00020 #endif
00021
00022 #if defined(OIV_HEADLESS)
00023 #define glewGetContextNative eglewGetContext
00024 #elif defined(_WIN32)
00025 #define glewGetContextNative wglewGetContext
00026 #elif !defined(__APPLE__) || defined(GLEW_APPLE_GLX)
00027 #define glewGetContextNative glxewGetContext
00028 #else
00029 #define glewGetContextNative glewGetContextMac
00030 #endif
00031
00033 namespace SoEGLEW
00034 {
00035 struct EGLEWContextStruct;
00036 }
00037
00038 namespace SoGLXEW
00039 {
00040 struct GLXEWContextStruct;
00041 }
00045 {
00046 public:
00047
00048 #if defined(OIV_HEADLESS)
00049 typedef struct SoEGLEW::EGLEWContextStruct GlewContextNative;
00050 #elif defined(_WIN32)
00051 typedef struct WGLEWContextStruct GlewContextNative;
00052 #elif !defined(__APPLE__) || defined(GLEW_APPLE_GLX)
00053 typedef struct SoGLXEW::GLXEWContextStruct GlewContextNative;
00054 #else
00055 typedef struct GLEWContextStruct GlewContextNative;
00056 #endif
00057 SoGLGlew();
00058 ~SoGLGlew();
00059
00060
00061 struct GLEWContextStruct* m_glewContext;
00062 GlewContextNative* m_glewContextNative;
00063
00064 bool m_glewInit;
00065
00066
00067 struct GLEWContextStruct* glewGetContextIV() const
00068 { return m_glewContext; }
00069
00070 GlewContextNative* glewGetContextNativeIV() const
00071 { return m_glewContextNative; }
00072
00073 bool isGLEWInitialized() { return m_glewInit; }
00074
00078 void initGLEWContext();
00082 bool initGLEW();
00083 bool initGLXEW();
00084 bool initEGLEW();
00085
00086 void cleanGLEWContext();
00087 };
00088 #endif // SOGLGLEW_H
00089