0032289: Visualization - add NCollection_Mat3 for 3x3 matrix similar to NCollection_Mat4
[occt.git] / src / OpenGl / OpenGl_ShaderProgram.cxx
index c46ead0..55971d5 100755 (executable)
@@ -821,17 +821,6 @@ GLint OpenGl_ShaderProgram::GetAttributeLocation (const Handle(OpenGl_Context)&
        : INVALID_LOCATION;
 }
 
-// =======================================================================
-// function : GetUniform
-// purpose  : Returns the value of the integer uniform variable
-// =======================================================================
-Standard_Boolean OpenGl_ShaderProgram::GetUniform (const Handle(OpenGl_Context)& theCtx,
-                                                   const GLchar*                 theName,
-                                                   OpenGl_Vec4i&                 theValue) const
-{
-  return GetUniform (theCtx, GetUniformLocation (theCtx, theName), theValue);
-}
-
 // =======================================================================
 // function : GetUniform
 // purpose  : Returns the value of the integer uniform variable
@@ -849,17 +838,6 @@ Standard_Boolean OpenGl_ShaderProgram::GetUniform (const Handle(OpenGl_Context)&
   return Standard_True;
 }
 
-// =======================================================================
-// function : GetUniform
-// purpose  : Returns the value of the floating-point uniform variable
-// =======================================================================
-Standard_Boolean OpenGl_ShaderProgram::GetUniform (const Handle(OpenGl_Context)& theCtx,
-                                                   const GLchar*                 theName,
-                                                   OpenGl_Vec4&                  theValue) const
-{
-  return GetUniform (theCtx, GetUniformLocation (theCtx, theName), theValue);
-}
-
 // =======================================================================
 // function : GetUniform
 // purpose  : Returns the value of the floating-point uniform variable
@@ -877,17 +855,6 @@ Standard_Boolean OpenGl_ShaderProgram::GetUniform (const Handle(OpenGl_Context)&
   return Standard_True;
 }
 
-// =======================================================================
-// function : GetAttribute
-// purpose  : Returns the integer vertex attribute
-// =======================================================================
-Standard_Boolean OpenGl_ShaderProgram::GetAttribute (const Handle(OpenGl_Context)& theCtx,
-                                                     const GLchar*                 theName,
-                                                     OpenGl_Vec4i&                 theValue) const
-{
-  return GetAttribute (theCtx, GetAttributeLocation (theCtx, theName), theValue);
-}
-
 // =======================================================================
 // function : GetAttribute
 // purpose  : Returns the integer vertex attribute
@@ -905,17 +872,6 @@ Standard_Boolean OpenGl_ShaderProgram::GetAttribute (const Handle(OpenGl_Context
   return Standard_True;
 }
 
-// =======================================================================
-// function : GetAttribute
-// purpose  : Returns the floating-point vertex attribute
-// =======================================================================
-Standard_Boolean OpenGl_ShaderProgram::GetAttribute (const Handle(OpenGl_Context)& theCtx,
-                                                     const GLchar*                 theName,
-                                                     OpenGl_Vec4&                  theValue) const
-{
-  return GetAttribute (theCtx, GetAttributeLocation (theCtx, theName), theValue);
-}
-
 // =======================================================================
 // function : GetAttribute
 // purpose  : Returns the floating-point vertex attribute
@@ -945,17 +901,6 @@ Standard_Boolean OpenGl_ShaderProgram::SetAttributeName (const Handle(OpenGl_Con
   return Standard_True;
 }
 
-// =======================================================================
-// function : SetAttribute
-// purpose  :
-// =======================================================================
-Standard_Boolean OpenGl_ShaderProgram::SetAttribute (const Handle(OpenGl_Context)& theCtx,
-                                                     const GLchar*                 theName,
-                                                     GLfloat                       theValue)
-{
-  return SetAttribute (theCtx, GetAttributeLocation (theCtx, theName), theValue);
-}
-
 // =======================================================================
 // function : SetAttribute
 // purpose  :
@@ -973,17 +918,6 @@ Standard_Boolean OpenGl_ShaderProgram::SetAttribute (const Handle(OpenGl_Context
   return Standard_True;
 }
 
-// =======================================================================
-// function : SetAttribute
-// purpose  :
-// =======================================================================
-Standard_Boolean OpenGl_ShaderProgram::SetAttribute (const Handle(OpenGl_Context)& theCtx,
-                                                     const GLchar*                 theName,
-                                                     const OpenGl_Vec2&            theValue)
-{
-  return SetAttribute (theCtx, GetAttributeLocation (theCtx, theName), theValue);
-}
-
 // =======================================================================
 // function : SetAttribute
 // purpose  :
@@ -1001,17 +935,6 @@ Standard_Boolean OpenGl_ShaderProgram::SetAttribute (const Handle(OpenGl_Context
   return Standard_True;
 }
 
-// =======================================================================
-// function : SetAttribute
-// purpose  :
-// =======================================================================
-Standard_Boolean OpenGl_ShaderProgram::SetAttribute (const Handle(OpenGl_Context)& theCtx,
-                                                     const GLchar*                 theName,
-                                                     const OpenGl_Vec3&            theValue)
-{
-  return SetAttribute (theCtx, GetAttributeLocation (theCtx, theName), theValue);
-}
-
 // =======================================================================
 // function : SetAttribute
 // purpose  :
@@ -1029,17 +952,6 @@ Standard_Boolean OpenGl_ShaderProgram::SetAttribute (const Handle(OpenGl_Context
   return Standard_True;
 }
 
-// =======================================================================
-// function : SetAttribute
-// purpose  :
-// =======================================================================
-Standard_Boolean OpenGl_ShaderProgram::SetAttribute (const Handle(OpenGl_Context)& theCtx,
-                                                     const GLchar*                 theName,
-                                                     const OpenGl_Vec4&            theValue)
-{
-  return SetAttribute (theCtx, GetAttributeLocation (theCtx, theName), theValue);
-}
-
 // =======================================================================
 // function : SetAttribute
 // purpose  :
@@ -1057,17 +969,6 @@ Standard_Boolean OpenGl_ShaderProgram::SetAttribute (const Handle(OpenGl_Context
   return Standard_True;
 }
 
-// =======================================================================
-// function : SetUniform
-// purpose  : Specifies the value of the integer uniform variable
-// =======================================================================
-Standard_Boolean OpenGl_ShaderProgram::SetUniform (const Handle(OpenGl_Context)& theCtx,
-                                                   const GLchar*                 theName,
-                                                   GLint                         theValue)
-{
-  return SetUniform (theCtx, GetUniformLocation (theCtx, theName), theValue);
-}
-
 // =======================================================================
 // function : SetUniform
 // purpose  : Specifies the value of the integer uniform variable
@@ -1085,17 +986,6 @@ Standard_Boolean OpenGl_ShaderProgram::SetUniform (const Handle(OpenGl_Context)&
   return Standard_True;
 }
 
-// =======================================================================
-// function : SetUniform
-// purpose  :
-// =======================================================================
-Standard_Boolean OpenGl_ShaderProgram::SetUniform (const Handle(OpenGl_Context)& theCtx,
-                                                   const GLchar*                 theName,
-                                                   const OpenGl_Vec2u&           theValue)
-{
-  return SetUniform (theCtx, GetUniformLocation (theCtx, theName), theValue);
-}
-
 // =======================================================================
 // function : SetUniform
 // purpose  :
@@ -1167,17 +1057,6 @@ Standard_Boolean OpenGl_ShaderProgram::SetUniform (const Handle(OpenGl_Context)&
   return false;
 }
 
-// =======================================================================
-// function : SetUniform
-// purpose  : Specifies the value of the floating-point uniform variable
-// =======================================================================
-Standard_Boolean OpenGl_ShaderProgram::SetUniform (const Handle(OpenGl_Context)& theCtx,
-                                                   const GLchar*                 theName,
-                                                   GLfloat                       theValue)
-{
-  return SetUniform (theCtx, GetUniformLocation (theCtx, theName), theValue);
-}
-
 // =======================================================================
 // function : SetUniform
 // purpose  : Specifies the value of the floating-point uniform variable
@@ -1195,17 +1074,6 @@ Standard_Boolean OpenGl_ShaderProgram::SetUniform (const Handle(OpenGl_Context)&
   return Standard_True;
 }
 
-// =======================================================================
-// function : SetUniform
-// purpose  : Specifies the value of the integer uniform 2D vector
-// =======================================================================
-Standard_Boolean OpenGl_ShaderProgram::SetUniform (const Handle(OpenGl_Context)& theCtx,
-                                                   const GLchar*                 theName,
-                                                   const OpenGl_Vec2i&           theValue)
-{
-  return SetUniform (theCtx, GetUniformLocation (theCtx, theName), theValue);
-}
-
 // =======================================================================
 // function : SetUniform
 // purpose  : Specifies the value of the integer uniform 2D vector
@@ -1223,17 +1091,6 @@ Standard_Boolean OpenGl_ShaderProgram::SetUniform (const Handle(OpenGl_Context)&
   return Standard_True;
 }
 
-// =======================================================================
-// function : SetUniform
-// purpose  : Specifies the value of the integer uniform 3D vector
-// =======================================================================
-Standard_Boolean OpenGl_ShaderProgram::SetUniform (const Handle(OpenGl_Context)& theCtx,
-                                                   const GLchar*                 theName,
-                                                   const OpenGl_Vec3i&           theValue)
-{
-  return SetUniform (theCtx, GetUniformLocation (theCtx, theName), theValue);
-}
-
 // =======================================================================
 // function : SetUniform
 // purpose  : Specifies the value of the integer uniform 3D vector
@@ -1251,17 +1108,6 @@ Standard_Boolean OpenGl_ShaderProgram::SetUniform (const Handle(OpenGl_Context)&
   return Standard_True;
 }
 
-// =======================================================================
-// function : SetUniform
-// purpose  : Specifies the value of the integer uniform 4D vector
-// =======================================================================
-Standard_Boolean OpenGl_ShaderProgram::SetUniform (const Handle(OpenGl_Context)& theCtx,
-                                                   const GLchar*                 theName,
-                                                   const OpenGl_Vec4i&           theValue)
-{
-  return SetUniform (theCtx, GetUniformLocation (theCtx, theName), theValue);
-}
-
 // =======================================================================
 // function : SetUniform
 // purpose  : Specifies the value of the integer uniform 4D vector
@@ -1279,17 +1125,6 @@ Standard_Boolean OpenGl_ShaderProgram::SetUniform (const Handle(OpenGl_Context)&
   return Standard_True;
 }
 
-// =======================================================================
-// function : SetUniform
-// purpose  : Specifies the value of the floating-point uniform 2D vector
-// =======================================================================
-Standard_Boolean OpenGl_ShaderProgram::SetUniform (const Handle(OpenGl_Context)& theCtx,
-                                                   const GLchar*                 theName,
-                                                   const OpenGl_Vec2&            theValue)
-{
-  return SetUniform (theCtx, GetUniformLocation (theCtx, theName), theValue);
-}
-
 // =======================================================================
 // function : SetUniform
 // purpose  : Specifies the value of the floating-point uniform 2D vector
@@ -1307,17 +1142,6 @@ Standard_Boolean OpenGl_ShaderProgram::SetUniform (const Handle(OpenGl_Context)&
   return Standard_True;
 }
 
-// =======================================================================
-// function : SetUniform
-// purpose  : Specifies the value of the floating-point uniform 3D vector
-// =======================================================================
-Standard_Boolean OpenGl_ShaderProgram::SetUniform (const Handle(OpenGl_Context)& theCtx,
-                                                   const GLchar*                 theName,
-                                                   const OpenGl_Vec3&            theValue)
-{
-  return SetUniform (theCtx, GetUniformLocation (theCtx, theName), theValue);
-}
-
 // =======================================================================
 // function : SetUniform
 // purpose  : Specifies the value of the floating-point uniform 3D vector
@@ -1335,17 +1159,6 @@ Standard_Boolean OpenGl_ShaderProgram::SetUniform (const Handle(OpenGl_Context)&
   return Standard_True;
 }
 
-// =======================================================================
-// function : SetUniform
-// purpose  : Specifies the value of the floating-point uniform 4D vector
-// =======================================================================
-Standard_Boolean OpenGl_ShaderProgram::SetUniform (const Handle(OpenGl_Context)& theCtx,
-                                                   const GLchar*                 theName,
-                                                   const OpenGl_Vec4&            theValue)
-{
-  return SetUniform (theCtx, GetUniformLocation (theCtx, theName), theValue);
-}
-
 // =======================================================================
 // function : SetUniform
 // purpose  : Specifies the value of the floating-point uniform 4D vector
@@ -1365,14 +1178,20 @@ Standard_Boolean OpenGl_ShaderProgram::SetUniform (const Handle(OpenGl_Context)&
 
 // =======================================================================
 // function : SetUniform
-// purpose  : Specifies the value of the floating-point uniform 4x4 matrix
+// purpose  :
 // =======================================================================
-Standard_Boolean OpenGl_ShaderProgram::SetUniform (const Handle(OpenGl_Context)& theCtx,
-                                                   const GLchar*                 theName,
-                                                   const OpenGl_Mat4&            theValue,
-                                                   GLboolean                     theTranspose)
+Standard_Boolean OpenGl_ShaderProgram::SetUniform (const Handle(OpenGl_Context)&  theCtx,
+                                                   GLint                          theLocation,
+                                                   GLuint                         theCount,
+                                                   const NCollection_Mat3<float>* theData)
 {
-  return SetUniform (theCtx, GetUniformLocation (theCtx, theName), theValue, theTranspose);
+  if (myProgramID == NO_PROGRAM || theLocation == INVALID_LOCATION)
+  {
+    return Standard_False;
+  }
+
+  theCtx->core20fwd->glUniformMatrix3fv (theLocation, theCount, GL_FALSE, theData->GetData());
+  return Standard_True;
 }
 
 // =======================================================================
@@ -1389,34 +1208,10 @@ Standard_Boolean OpenGl_ShaderProgram::SetUniform (const Handle(OpenGl_Context)&
     return Standard_False;
   }
 
-  theCtx->core20fwd->glUniformMatrix4fv (theLocation, 1, GL_FALSE, theTranspose ? theValue.Transposed() : theValue);
+  theCtx->core20fwd->glUniformMatrix4fv (theLocation, 1, GL_FALSE, theTranspose ? theValue.Transposed().GetData() : theValue.GetData());
   return Standard_True;
 }
 
-// =======================================================================
-// function : SetUniform
-// purpose  : Specifies the value of the floating-point uniform 4x4 matrix
-// =======================================================================
-Standard_Boolean OpenGl_ShaderProgram::SetUniform (const Handle(OpenGl_Context)& theCtx,
-                                                   const GLchar*                 theName,
-                                                   const OpenGl_Matrix&          theValue,
-                                                   GLboolean                     theTranspose)
-{
-  return SetUniform (theCtx, GetUniformLocation (theCtx, theName), theValue, theTranspose);
-}
-
-// =======================================================================
-// function : SetUniform
-// purpose  : Specifies the value of the floating-point uniform 4x4 matrix
-// =======================================================================
-Standard_Boolean OpenGl_ShaderProgram::SetUniform (const Handle(OpenGl_Context)& theCtx,
-                                                   GLint                         theLocation,
-                                                   const OpenGl_Matrix&          theValue,
-                                                   GLboolean                     theTranspose)
-{
-  return SetUniform (theCtx, theLocation, OpenGl_Mat4::Map (*theValue.mat), theTranspose);
-}
-
 // =======================================================================
 // function : SetUniform
 // purpose  :
@@ -1579,17 +1374,6 @@ Standard_Boolean OpenGl_ShaderProgram::SetUniform (const Handle(OpenGl_Context)&
   return Standard_True;
 }
 
-// =======================================================================
-// function : SetSampler
-// purpose  : Specifies the value of the sampler uniform variable
-// =======================================================================
-Standard_Boolean OpenGl_ShaderProgram::SetSampler (const Handle(OpenGl_Context)& theCtx,
-                                                   const GLchar*                 theName,
-                                                   const Graphic3d_TextureUnit   theTextureUnit)
-{
-  return SetSampler (theCtx, GetUniformLocation (theCtx, theName), theTextureUnit);
-}
-
 // =======================================================================
 // function : SetSampler
 // purpose  : Specifies the value of the sampler uniform variable