0031372: Visualization, TKOpenGl - failed to create texture on OpenGL ES 2.0 due...
authorkgv <kgv@opencascade.com>
Fri, 14 Feb 2020 16:29:51 +0000 (19:29 +0300)
committerkgv <kgv@opencascade.com>
Sun, 16 Feb 2020 12:05:41 +0000 (15:05 +0300)
OpenGl_Sampler::applySamplerParams() has been corrected to check for OpenGL ES 3.0
when applying GL_TEXTURE_BASE_LEVEL/GL_TEXTURE_MAX_LEVEL parameters.

src/OpenGl/OpenGl_Context.hxx
src/OpenGl/OpenGl_Sampler.cxx

index 9808544..4d89de5 100644 (file)
@@ -495,6 +495,16 @@ public:
   //! Either GL_CLAMP_TO_EDGE (1.2+) or GL_CLAMP (1.1).
   Standard_Integer TextureWrapClamp() const { return myTexClamp; }
 
+  //! @return true if texture parameters GL_TEXTURE_BASE_LEVEL/GL_TEXTURE_MAX_LEVEL are supported.
+  Standard_Boolean HasTextureBaseLevel() const
+  {
+  #if !defined(GL_ES_VERSION_2_0)
+    return IsGlGreaterEqual (1, 2);
+  #else
+    return IsGlGreaterEqual (3, 0);
+  #endif
+  }
+
   //! @return maximum degree of anisotropy texture filter
   Standard_Integer MaxDegreeOfAnisotropy() const { return myAnisoMax; }
 
index 4fcfca4..6e7bb10 100644 (file)
@@ -263,8 +263,8 @@ void OpenGl_Sampler::applySamplerParams (const Handle(OpenGl_Context)& theCtx,
     setParameter (theCtx, theSampler, theTarget, GL_TEXTURE_MAX_ANISOTROPY_EXT, aDegree);
   }
 
-  if (theCtx->IsGlGreaterEqual(1, 2) &&
-      (theSampler == NULL || !theSampler->isValidSampler()))
+  if (theCtx->HasTextureBaseLevel()
+   && (theSampler == NULL || !theSampler->isValidSampler()))
   {
     setParameter (theCtx, theSampler, theTarget, GL_TEXTURE_BASE_LEVEL, theParams->BaseLevel());
     setParameter (theCtx, theSampler, theTarget, GL_TEXTURE_MAX_LEVEL,  theParams->MaxLevel());