0025762: Visualization, TKOpenGl - fix debug assertion within OpenGl_Workspace::Uploa...
authorkgv <kgv@opencascade.com>
Thu, 29 Jan 2015 10:14:49 +0000 (13:14 +0300)
committerbugmaster <bugmaster@opencascade.com>
Thu, 5 Feb 2015 09:51:58 +0000 (12:51 +0300)
src/OpenGl/OpenGl_Workspace_Raytrace.cxx

index cff5b57..acf15d1 100644 (file)
@@ -1832,13 +1832,16 @@ Standard_Boolean OpenGl_Workspace::UploadRaytraceData()
   }
 
   const NCollection_Handle<BVH_Tree<Standard_ShortReal, 3> >& aBVH = myRaytraceGeometry.BVH();
-
-  aResult &= mySceneNodeInfoTexture->SubData (myGlContext, 0, aBVH->Length(),
-    reinterpret_cast<const GLuint*> (&aBVH->NodeInfoBuffer().front()));
-  aResult &= mySceneMinPointTexture->SubData (myGlContext, 0, aBVH->Length(),
-    reinterpret_cast<const GLfloat*> (&aBVH->MinPointBuffer().front()));
-  aResult &= mySceneMaxPointTexture->SubData (myGlContext, 0, aBVH->Length(),
-    reinterpret_cast<const GLfloat*> (&aBVH->MaxPointBuffer().front()));
+  const Standard_Integer aBvhLength = aBVH->Length();
+  if (aBvhLength > 0)
+  {
+    aResult &= mySceneNodeInfoTexture->SubData (myGlContext, 0, aBVH->Length(),
+      reinterpret_cast<const GLuint*> (&aBVH->NodeInfoBuffer().front()));
+    aResult &= mySceneMinPointTexture->SubData (myGlContext, 0, aBVH->Length(),
+      reinterpret_cast<const GLfloat*> (&aBVH->MinPointBuffer().front()));
+    aResult &= mySceneMaxPointTexture->SubData (myGlContext, 0, aBVH->Length(),
+      reinterpret_cast<const GLfloat*> (&aBVH->MaxPointBuffer().front()));
+  }
 
   for (Standard_Integer aNodeIdx = 0; aNodeIdx < aBVH->Length(); ++aNodeIdx)
   {