diff --git a/source/Irrlicht/COpenGLDriver.cpp b/source/Irrlicht/COpenGLDriver.cpp index d4d9d4e2..c647718b 100644 --- a/source/Irrlicht/COpenGLDriver.cpp +++ b/source/Irrlicht/COpenGLDriver.cpp @@ -2421,7 +2421,7 @@ void COpenGLDriver::drawPixel(u32 x, u32 y, const SColor &color) bool COpenGLDriver::setActiveTexture(u32 stage, const video::ITexture* texture) { - if (stage >= MaxTextureUnits) + if (stage >= MaxSupportedTextures) return false; if (CurrentTexture[stage]==texture) @@ -2460,7 +2460,7 @@ bool COpenGLDriver::setActiveTexture(u32 stage, const video::ITexture* texture) bool COpenGLDriver::disableTextures(u32 fromStage) { bool result=true; - for (u32 i=fromStage; i102 || FeatureAvailable[IRR_ARB_multitexture]) { +#if defined(GL_MAX_TEXTURE_UNITS) glGetIntegerv(GL_MAX_TEXTURE_UNITS, &num); +#elif defined(GL_MAX_TEXTURE_UNITS_ARB) + glGetIntegerv(GL_MAX_TEXTURE_UNITS_ARB, &num); +#endif MaxSupportedTextures=static_cast(num); } +#endif +#if defined(GL_ARB_vertex_shader) || defined(GL_VERSION_2_0) + if (Version>=200 || FeatureAvailable[IRR_ARB_vertex_shader]) + { + num=0; +#if defined(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS) + glGetIntegerv(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, &num); +#elif defined(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB) + glGetIntegerv(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB, &num); +#endif + MaxSupportedTextures=core::max_(MaxSupportedTextures,static_cast(num)); + } #endif glGetIntegerv(GL_MAX_LIGHTS, &num); MaxLights=static_cast(num);