Browse Source

Disable rendertarget mipmaps on WebGL for now, as they appeared to not be working.

Lasse Öörni 9 years ago
parent
commit
875ebcfef5

+ 2 - 0
Docs/Reference.dox

@@ -1117,6 +1117,8 @@ OpenGL ES 2.0 has further limitations:
 
 - Line antialiasing is not supported.
 
+- WebGL appears to not support rendertarget mipmap regeneration, so mipmaps for rendertargets are disabled on the Web platform for now.
+
 \page VertexBuffers Vertex buffers
 
 %Geometry data is defined by VertexBuffer objects, which hold a number of vertices of a certain vertex format. For rendering, the data is uploaded to the GPU, but optionally a shadow copy of

+ 5 - 0
Source/Urho3D/Graphics/OpenGL/OGLTexture2D.cpp

@@ -448,6 +448,10 @@ bool Texture2D::Create()
         requestedLevels_ = 1;
     else if (usage_ == TEXTURE_RENDERTARGET)
     {
+#ifdef __EMSCRIPTEN__
+        // glGenerateMipmap appears to not be working on WebGL, disable rendertarget mipmaps for now
+        requestedLevels_ = 1;
+#else
         if (requestedLevels_ != 1)
         {
             // Generate levels for the first time now
@@ -455,6 +459,7 @@ bool Texture2D::Create()
             // Determine max. levels automatically
             requestedLevels_ = 0;
         }
+#endif
     }
 
     levels_ = CheckMaxLevels(width_, height_, requestedLevels_);

+ 5 - 0
Source/Urho3D/Graphics/OpenGL/OGLTexture2DArray.cpp

@@ -455,6 +455,10 @@ bool Texture2DArray::Create()
         requestedLevels_ = 1;
     else if (usage_ == TEXTURE_RENDERTARGET)
     {
+#ifdef __EMSCRIPTEN__
+        // glGenerateMipmap appears to not be working on WebGL, disable rendertarget mipmaps for now
+        requestedLevels_ = 1;
+#else
         if (requestedLevels_ != 1)
         {
             // Generate levels for the first time now
@@ -462,6 +466,7 @@ bool Texture2DArray::Create()
             // Determine max. levels automatically
             requestedLevels_ = 0;
         }
+#endif
     }
 
     levels_ = CheckMaxLevels(width_, height_, requestedLevels_);

+ 5 - 0
Source/Urho3D/Graphics/OpenGL/OGLTextureCube.cpp

@@ -473,6 +473,10 @@ bool TextureCube::Create()
         requestedLevels_ = 1;
     else if (usage_ == TEXTURE_RENDERTARGET)
     {
+#ifdef __EMSCRIPTEN__
+        // glGenerateMipmap appears to not be working on WebGL, disable rendertarget mipmaps for now
+        requestedLevels_ = 1;
+#else
         if (requestedLevels_ != 1)
         {
             // Generate levels for the first time now
@@ -480,6 +484,7 @@ bool TextureCube::Create()
             // Determine max. levels automatically
             requestedLevels_ = 0;
         }
+#endif
     }
 
     levels_ = CheckMaxLevels(width_, height_, requestedLevels_);