浏览代码

gl side mip sanity clamps

AzaezelX 1 月之前
父节点
当前提交
8d38fa0bc4
共有 1 个文件被更改,包括 9 次插入1 次删除
  1. 9 1
      Engine/source/gfx/gl/gfxGLTextureManager.cpp

+ 9 - 1
Engine/source/gfx/gl/gfxGLTextureManager.cpp

@@ -116,10 +116,18 @@ void GFXGLTextureManager::innerCreateTexture( GFXGLTextureObject *retTex,
    {
    {
       retTex->mMipLevels = numMipLevels > 1 ? numMipLevels : 0;
       retTex->mMipLevels = numMipLevels > 1 ? numMipLevels : 0;
    }
    }
-   else if(profile->testFlag(GFXTextureProfile::NoMipmap) || profile->testFlag(GFXTextureProfile::RenderTarget) || numMipLevels == 1 || retTex->mIsNPoT2)
+   else if(profile->testFlag(GFXTextureProfile::NoMipmap) || numMipLevels == 1)
    {
    {
       retTex->mMipLevels = 1;
       retTex->mMipLevels = 1;
    }
    }
+   else if (profile->testFlag(GFXTextureProfile::RenderTarget))
+   {
+         if (numMipLevels == 0) //auto
+            numMipLevels = mFloor(mLog2(mMax(width, height))) + 1;
+         else if (numMipLevels > 1) //capped
+            numMipLevels = mMin(numMipLevels, mFloor(mLog2(mMax(width, height))) + 1);
+         retTex->mMipLevels = mClampF(numMipLevels, 1, 13);
+   }
    else
    else
    {
    {
       retTex->mMipLevels = numMipLevels;
       retTex->mMipLevels = numMipLevels;