Просмотр исходного кода

Remove code duplication from checking max. mip levels on OpenGL.

Lasse Öörni 9 лет назад
Родитель
Сommit
26342ce69e

+ 1 - 11
Source/Urho3D/Graphics/OpenGL/OGLTexture2D.cpp

@@ -508,17 +508,7 @@ bool Texture2D::Create()
     }
     }
 
 
     // Set mipmapping
     // Set mipmapping
-    levels_ = requestedLevels_;
-    if (!levels_)
-    {
-        unsigned maxSize = Max((int)width_, (int)height_);
-        while (maxSize)
-        {
-            maxSize >>= 1;
-            ++levels_;
-        }
-    }
-
+    levels_ = CheckMaxLevels(width_, height_, requestedLevels_);
 #ifndef GL_ES_VERSION_2_0
 #ifndef GL_ES_VERSION_2_0
     glTexParameteri(target_, GL_TEXTURE_BASE_LEVEL, 0);
     glTexParameteri(target_, GL_TEXTURE_BASE_LEVEL, 0);
     glTexParameteri(target_, GL_TEXTURE_MAX_LEVEL, levels_ - 1);
     glTexParameteri(target_, GL_TEXTURE_MAX_LEVEL, levels_ - 1);

+ 1 - 11
Source/Urho3D/Graphics/OpenGL/OGLTexture2DArray.cpp

@@ -604,17 +604,7 @@ bool Texture2DArray::Create()
         URHO3D_LOGERROR("Failed to create texture array");
         URHO3D_LOGERROR("Failed to create texture array");
 
 
     // Set mipmapping
     // Set mipmapping
-    levels_ = requestedLevels_;
-    if (!levels_)
-    {
-        unsigned maxSize = (unsigned)Max(width_, height_);
-        while (maxSize)
-        {
-            maxSize >>= 1;
-            ++levels_;
-        }
-    }
-
+    levels_ = CheckMaxLevels(width_, height_, requestedLevels_);
     glTexParameteri(target_, GL_TEXTURE_BASE_LEVEL, 0);
     glTexParameteri(target_, GL_TEXTURE_BASE_LEVEL, 0);
     glTexParameteri(target_, GL_TEXTURE_MAX_LEVEL, levels_ - 1);
     glTexParameteri(target_, GL_TEXTURE_MAX_LEVEL, levels_ - 1);
 
 

+ 1 - 11
Source/Urho3D/Graphics/OpenGL/OGLTexture3D.cpp

@@ -515,17 +515,7 @@ bool Texture3D::Create()
     }
     }
 
 
     // Set mipmapping
     // Set mipmapping
-    levels_ = requestedLevels_;
-    if (!levels_)
-    {
-        unsigned maxSize = (unsigned)Max(Max((int)width_, (int)height_), (int)depth_);
-        while (maxSize)
-        {
-            maxSize >>= 1;
-            ++levels_;
-        }
-    }
-
+    levels_ = CheckMaxLevels(width_, height_, depth_, requestedLevels_);
     glTexParameteri(target_, GL_TEXTURE_BASE_LEVEL, 0);
     glTexParameteri(target_, GL_TEXTURE_BASE_LEVEL, 0);
     glTexParameteri(target_, GL_TEXTURE_MAX_LEVEL, levels_ - 1);
     glTexParameteri(target_, GL_TEXTURE_MAX_LEVEL, levels_ - 1);
 
 

+ 1 - 11
Source/Urho3D/Graphics/OpenGL/OGLTextureCube.cpp

@@ -713,17 +713,7 @@ bool TextureCube::Create()
         URHO3D_LOGERROR("Failed to create texture");
         URHO3D_LOGERROR("Failed to create texture");
 
 
     // Set mipmapping
     // Set mipmapping
-    levels_ = requestedLevels_;
-    if (!levels_)
-    {
-        unsigned maxSize = (unsigned)Max(width_, height_);
-        while (maxSize)
-        {
-            maxSize >>= 1;
-            ++levels_;
-        }
-    }
-
+    levels_ = CheckMaxLevels(width_, height_, requestedLevels_);
 #ifndef GL_ES_VERSION_2_0
 #ifndef GL_ES_VERSION_2_0
     glTexParameteri(target_, GL_TEXTURE_BASE_LEVEL, 0);
     glTexParameteri(target_, GL_TEXTURE_BASE_LEVEL, 0);
     glTexParameteri(target_, GL_TEXTURE_MAX_LEVEL, levels_ - 1);
     glTexParameteri(target_, GL_TEXTURE_MAX_LEVEL, levels_ - 1);