From 48dad727b1a5c9af7513aba61526f2349b4c8438 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Fri, 7 May 2004 11:28:55 +0000 Subject: [PATCH] From Bob Kuehne, added getting of the max number of texture units in the Texture::Extension object --- include/osg/Texture | 8 ++++++++ src/osg/Texture.cpp | 4 +++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/include/osg/Texture b/include/osg/Texture index f11de0af8..b8278760a 100644 --- a/include/osg/Texture +++ b/include/osg/Texture @@ -113,6 +113,10 @@ #define TEXTURE_COMPARE_FAIL_VALUE_ARB 0x80BF #endif +#if !defined( GL_MAX_TEXTURE_UNITS ) +#define GL_MAX_TEXTURE_UNITS 0x84E2 +#endif + namespace osg { /** Texture base class which encapsulates OpenGl texture functionality which common betweent the various types of OpenGL textures.*/ @@ -360,6 +364,9 @@ class SG_EXPORT Texture : public osg::StateAttribute void setMaxTextureSize(GLint maxsize) { _maxTextureSize=maxsize; } GLint maxTextureSize() const { return _maxTextureSize; } + void setNumTextureUnits(GLint nunits ) { _numTextureUnits=nunits; } + GLint numTextureUnits() const { return _numTextureUnits; } + bool isCompressedTexImage2DSupported() const { return _glCompressedTexImage2D!=0; } void setCompressedTexImage2DProc(void* ptr) { _glCompressedTexImage2D = ptr; } @@ -391,6 +398,7 @@ class SG_EXPORT Texture : public osg::StateAttribute bool _isClientStorageSupported; GLint _maxTextureSize; + GLint _numTextureUnits; void* _glCompressedTexImage2D; void* _glCompressedTexSubImage2D; diff --git a/src/osg/Texture.cpp b/src/osg/Texture.cpp index dbdfa4155..38cc20fbe 100644 --- a/src/osg/Texture.cpp +++ b/src/osg/Texture.cpp @@ -1102,6 +1102,7 @@ void Texture::Extensions::lowestCommonDenominator(const Extensions& rhs) if (!rhs._isGenerateMipMapSupported) _isGenerateMipMapSupported = false; if (rhs._maxTextureSize<_maxTextureSize) _maxTextureSize = rhs._maxTextureSize; + if (rhs._numTextureUnits<_numTextureUnits) _numTextureUnits = rhs._numTextureUnits; if (!rhs._glCompressedTexImage2D) _glCompressedTexImage2D = 0; if (!rhs._glCompressedTexSubImage2D) _glCompressedTexSubImage2D = 0; @@ -1147,8 +1148,9 @@ void Texture::Extensions::setupGLExtensions() _maxTextureSize = osg_max_size; } + } - } + glGetIntegerv(GL_MAX_TEXTURE_UNITS,&_numTextureUnits); _glCompressedTexImage2D = getGLExtensionFuncPtr("glCompressedTexImage2D","glCompressedTexImage2DARB"); _glCompressedTexSubImage2D = getGLExtensionFuncPtr("glCompressedTexSubImage2D","glCompressedTexSubImage2DARB");