--- Irrlicht.old/COpenGLDriver.cpp 2005-03-28 11:39:08.000000000 +0200 +++ Irrlicht-0.9/COpenGLDriver.cpp 2005-04-05 15:21:12.217359496 +0200 @@ -162,36 +162,7 @@ return true; } - - - -//! win32 destructor -COpenGLDriver::~COpenGLDriver() -{ - deleteMaterialRenders(); - - // I get a blue screen on my laptop, when I do not delete the - // textures manually before releasing the dc. Oh how I love this. - - deleteAllTextures(); - - if (HRc) - { - if (!wglMakeCurrent(0, 0)) - os::Printer::log("Release of dc and rc failed.", ELL_WARNING); - - if (!wglDeleteContext(HRc)) - os::Printer::log("Release of rendering context failed.", ELL_WARNING); - - HRc = 0; - } - - if (HDc) - ReleaseDC(Window, HDc); - - HDc = 0; -} -#endif +#endif // WIN32 // ----------------------------------------------------------------------- @@ -223,27 +194,36 @@ ExposedData.OpenGLLinux.Window = XWindow; } +#endif // LINUX + -//! linux destructor COpenGLDriver::~COpenGLDriver() { + deleteMaterialRenders(); + + // I get a blue screen on my laptop, when I do not delete the + // textures manually before releasing the dc. Oh how I love this. + deleteAllTextures(); -} -// extensions -#ifdef _IRR_LINUX_OPENGL_USE_EXTENSIONS_ -PFNGLACTIVETEXTUREARBPROC pGlActiveTextureARB = 0; -PFNGLCLIENTACTIVETEXTUREARBPROC pGlClientActiveTextureARB = 0; -//PFNGLACTIVETEXTUREPROC pGlActiveTextureARB = 0; -//PFNGLCLIENTACTIVETEXTUREPROC pGlClientActiveTextureARB = 0; -PFNGLGENPROGRAMSARBPROC pGlGenProgramsARB = 0; -PFNGLBINDPROGRAMARBPROC pGlBindProgramARB = 0; -PFNGLPROGRAMSTRINGARBPROC pGlProgramStringARB = 0; -PFNGLDELETEPROGRAMSNVPROC pglDeleteProgramsARB = 0; -PFNGLPROGRAMLOCALPARAMETER4FVARBPROC pglProgramLocalParameter4fvARB = 0; -#endif // _IRR_LINUX_OPENGL_USE_EXTENSIONS_ + #ifdef _IRR_WINDOWS_ + if (HRc) + { + if (!wglMakeCurrent(0, 0)) + os::Printer::log("Release of dc and rc failed.", ELL_WARNING); -#endif // LINUX + if (!wglDeleteContext(HRc)) + os::Printer::log("Release of rendering context failed.", ELL_WARNING); + + HRc = 0; + } + + if (HDc) + ReleaseDC(Window, HDc); + + HDc = 0; + #endif // WIN32 +} @@ -320,13 +303,19 @@ if (MultiTextureExtension) { - #ifdef _IRR_WINDOWS_ - - // Windows - // get multitextureing function pointers +#ifdef _IRR_OPENGL_USE_EXTENSIONS_ +#ifdef _IRR_WINDOWS_ + #define GetProcAddress(X) wglGetProcAddress(X) +#else +#ifdef GLX_VERSION_1_4 + #define GetProcAddress(X) glXGetProcAddress(reinterpret_cast(X)) +#else + #define GetProcAddress(X) glXGetProcAddressARB(reinterpret_cast(X)) +#endif +#endif // _IRR_WINDOWS_ - pGlActiveTextureARB = (PFNGLACTIVETEXTUREARBPROC) wglGetProcAddress("glActiveTextureARB"); - pGlClientActiveTextureARB= (PFNGLCLIENTACTIVETEXTUREARBPROC) wglGetProcAddress("glClientActiveTextureARB"); + pGlActiveTextureARB = (PFNGLACTIVETEXTUREARBPROC) GetProcAddress("glActiveTextureARB"); + pGlClientActiveTextureARB= (PFNGLCLIENTACTIVETEXTUREARBPROC) GetProcAddress("glClientActiveTextureARB"); if (!pGlActiveTextureARB || !pGlClientActiveTextureARB) { MultiTextureExtension = false; @@ -334,54 +323,26 @@ } // get fragment and vertex program function pointers - pGlGenProgramsARB = (PFNGLGENPROGRAMSARBPROC) wglGetProcAddress("glGenProgramsARB"); - pGlBindProgramARB = (PFNGLBINDPROGRAMARBPROC) wglGetProcAddress("glBindProgramARB"); - pGlProgramStringARB = (PFNGLPROGRAMSTRINGARBPROC) wglGetProcAddress("glProgramStringARB"); - pglDeleteProgramsARB = (PFNGLDELETEPROGRAMSNVPROC) wglGetProcAddress("glDeleteProgramsARB"); - pglProgramLocalParameter4fvARB = (PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) wglGetProcAddress("glProgramLocalParameter4fvARB"); - - #else - #ifdef _IRR_LINUX_OPENGL_USE_EXTENSIONS_ - - // Linux - - if (MultiTextureExtension) - os::Printer::log("Multittexturing active."); - - pGlActiveTextureARB = (PFNGLACTIVETEXTUREARBPROC) - #ifdef GLX_VERSION_1_4 - glXGetProcAddress(reinterpret_cast("glActiveTextureARB")); - #else - glXGetProcAddressARB(reinterpret_cast("glActiveTextureARB")); - #endif - - pGlClientActiveTextureARB = (PFNGLCLIENTACTIVETEXTUREARBPROC) - #ifdef GLX_VERSION_1_4 - glXGetProcAddress(reinterpret_cast("glClientActiveTextureARB")); - #else - glXGetProcAddressARB(reinterpret_cast("glClientActiveTextureARB")); - #endif - - ARBVertexProgramExtension = false; - ARBFragmentProgramExtension = false; - - #else // _IRR_LINUX_OPENGL_USE_EXTENSIONS_ - - MultiTextureExtension = false; - ARBVertexProgramExtension = false; - ARBFragmentProgramExtension = false; - os::Printer::log("Extentions disabled.", ELL_WARNING); - - #endif // _IRR_LINUX_OPENGL_USE_EXTENSIONS_ - #endif // _WIN32 + pGlGenProgramsARB = (PFNGLGENPROGRAMSARBPROC) GetProcAddress("glGenProgramsARB"); + pGlBindProgramARB = (PFNGLBINDPROGRAMARBPROC) GetProcAddress("glBindProgramARB"); + pGlProgramStringARB = (PFNGLPROGRAMSTRINGARBPROC) GetProcAddress("glProgramStringARB"); + pglDeleteProgramsARB = (PFNGLDELETEPROGRAMSNVPROC) GetProcAddress("glDeleteProgramsARB"); + pglProgramLocalParameter4fvARB = (PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) GetProcAddress("glProgramLocalParameter4fvARB"); glGetIntegerv(GL_MAX_TEXTURE_UNITS_ARB, &MaxTextureUnits); - } - if (MaxTextureUnits < 2) - { + if (MaxTextureUnits < 2) + { + MultiTextureExtension = false; + os::Printer::log("Warning: OpenGL device only has one texture unit. Disabling multitexturing.", ELL_WARNING); + } + +#else // _IRR_OPENGL_USE_EXTENSIONS_ MultiTextureExtension = false; - os::Printer::log("Warning: OpenGL device only has one texture unit. Disabling multitexturing.", ELL_WARNING); + ARBVertexProgramExtension = false; + ARBFragmentProgramExtension = false; + os::Printer::log("Extensions disabled.", ELL_WARNING); +#endif // _IRR_OPENGL_USE_EXTENSIONS_ } // get vsync extension @@ -1741,63 +1702,58 @@ void COpenGLDriver::extGlActiveTextureARB(GLenum texture) { -#if defined(_IRR_WINDOWS_) || defined(_IRR_LINUX_OPENGL_USE_EXTENSIONS_) +#if defined(_IRR_OPENGL_USE_EXTENSIONS_) if (MultiTextureExtension && pGlActiveTextureARB) pGlActiveTextureARB(texture); #endif } void COpenGLDriver::extGlClientActiveTextureARB(GLenum texture) { -#if defined(_IRR_WINDOWS_) || defined(_IRR_LINUX_OPENGL_USE_EXTENSIONS_) +#if defined(_IRR_OPENGL_USE_EXTENSIONS_) if (MultiTextureExtension && pGlClientActiveTextureARB) pGlClientActiveTextureARB(texture); #endif } void COpenGLDriver::extGlGenProgramsARB(GLsizei n, GLuint *programs) { -#if defined(_IRR_WINDOWS_) || defined(_IRR_LINUX_OPENGL_USE_EXTENSIONS_) +#if defined(_IRR_OPENGL_USE_EXTENSIONS_) if (pGlGenProgramsARB) pGlGenProgramsARB(n, programs); #endif } void COpenGLDriver::extGlBindProgramARB(GLenum target, GLuint program) { -#if defined(_IRR_WINDOWS_) || defined(_IRR_LINUX_OPENGL_USE_EXTENSIONS_) +#if defined(_IRR_OPENGL_USE_EXTENSIONS_) if (pGlBindProgramARB) pGlBindProgramARB(target, program); #endif } void COpenGLDriver::extGlProgramStringARB(GLenum target, GLenum format, GLsizei len, const GLvoid *string) { -#if defined(_IRR_WINDOWS_) || defined(_IRR_LINUX_OPENGL_USE_EXTENSIONS_) +#if defined(_IRR_OPENGL_USE_EXTENSIONS_) if (pGlProgramStringARB) pGlProgramStringARB(target, format, len, string); #endif } void COpenGLDriver::extGlDeleteProgramsARB(GLsizei n, const GLuint *programs) { -#if defined(_IRR_WINDOWS_) || defined(_IRR_LINUX_OPENGL_USE_EXTENSIONS_) +#if defined(_IRR_OPENGL_USE_EXTENSIONS_) if (pglDeleteProgramsARB) pglDeleteProgramsARB(n, programs); #endif } void COpenGLDriver::extGlProgramLocalParameter4fvARB(GLenum n, GLuint i, const GLfloat * f) { -#if defined(_IRR_WINDOWS_) || defined(_IRR_LINUX_OPENGL_USE_EXTENSIONS_) +#if defined(_IRR_OPENGL_USE_EXTENSIONS_) if (pglProgramLocalParameter4fvARB) pglProgramLocalParameter4fvARB(n,i,f); #endif } bool COpenGLDriver::hasMultiTextureExtension() --- Irrlicht.old/COpenGLDriver.h 2005-03-28 10:47:32.000000000 +0200 +++ Irrlicht-0.9/COpenGLDriver.h 2005-04-05 15:19:26.157367066 +0200 @@ -302,12 +302,14 @@ GLint MaxTextureUnits; - #ifdef _IRR_WINDOWS_ + #ifdef _IRR_OPENGL_USE_EXTENSIONS_ PFNGLACTIVETEXTUREARBPROC pGlActiveTextureARB; PFNGLCLIENTACTIVETEXTUREARBPROC pGlClientActiveTextureARB; + #ifdef _IRR_WINDOWS_ typedef BOOL (APIENTRY *PFNWGLSWAPINTERVALFARPROC)(int); PFNWGLSWAPINTERVALFARPROC wglSwapIntervalEXT; + #endif PFNGLGENPROGRAMSARBPROC pGlGenProgramsARB; PFNGLBINDPROGRAMARBPROC pGlBindProgramARB; diff -Naur Irrlicht.old/include/IrrCompileConfig.h Irrlicht-0.11/include/IrrCompileConfig.h --- Irrlicht.old/include/IrrCompileConfig.h 2005-03-28 11:40:54.000000000 +0200 +++ Irrlicht-0.11/include/IrrCompileConfig.h 2005-04-05 15:20:21.676511050 +0200 @@ -49,11 +49,11 @@ #endif // ! _XBOX -//! Define LINUX_OPENGL_USE_EXTENSIONS if the OpenGL renderer should use OpenGL extensions. +//! Define _IRR_OPENGL_USE_EXTENSIONS_ if the OpenGL renderer should use OpenGL extensions. /** For being able to do things like multi texturing. It is useful to comment out this define to disable opengl extensions in linux because on some linux versions, these extensions does not exist. */ -#define _IRR_LINUX_OPENGL_USE_EXTENSIONS_ +#define _IRR_OPENGL_USE_EXTENSIONS_ //! Define _IRR_COMPILE_WITH_ZLIB_ to enable compiling the engine using zlib.