mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-19 13:40:49 +03:00
0025282: Visualization, OpenGl_PrimitiveArray - provide built-in GLSL programs as alternative to FFP
Enumerations Visual3d_TypeOfModel, V3d_TypeOfShadingModel. - Remove unused values V3d_MULTICOLOR, V3d_HIDDEN, Visual3d_TOM_INTERP_COLOR. - Add per-pixel shading mode - V3d_PHONG, Visual3d_TOM_FRAGMENT. Draw Harness command vrenderparams. Add option -shadingModel to setup Shading Model. OpenGl_Caps::ffpEnable - new option to switch FFP/built-in GLSL programs. OpenGl_ShaderManager - add built-in GLSL programs. Draw Harness command vcaps. - Fix command syntax to meet coding rules. - Add option -ffp to activate/disable built-in GLSL programs. GLSL API changes. - Rename vertex attribute occColor -> occVertColor. - Introduce vec4 occColor uniform variable for light-less shaders. - Introduce float occPointSize uniform variable for marker programs. OpenGl_VertexBuffer::bindAttribute() - activate normalization for non-GL_FLOAT types, since color attribute is defined as 32-bit vector of 4 unsigned byte values. OpenGl_Context - add methods SetColor4fv() and SetPointSize() for parameters redirection to active GLSL program (as alternative to glColor4fv() and glPointSize()). OpenGl_ShaderProgram - define default precision for float types in Fragment Shader within OpenGL ES 2.0+ context. OpenGl_AspectMarker, initialize Aspect_TOM_O_POINT display list in the same way as sprite texture. OpenGl_Texture, do not use sized internal formats on OpenGL ES.
This commit is contained in:
@@ -2061,8 +2061,13 @@ void OpenGl_Context::ReleaseDelayed()
|
||||
// function : BindProgram
|
||||
// purpose :
|
||||
// =======================================================================
|
||||
void OpenGl_Context::BindProgram (const Handle(OpenGl_ShaderProgram)& theProgram)
|
||||
Standard_Boolean OpenGl_Context::BindProgram (const Handle(OpenGl_ShaderProgram)& theProgram)
|
||||
{
|
||||
if (core20fwd == NULL)
|
||||
{
|
||||
return Standard_False;
|
||||
}
|
||||
|
||||
if (theProgram.IsNull()
|
||||
|| !theProgram->IsValid())
|
||||
{
|
||||
@@ -2071,9 +2076,53 @@ void OpenGl_Context::BindProgram (const Handle(OpenGl_ShaderProgram)& theProgram
|
||||
core20fwd->glUseProgram (OpenGl_ShaderProgram::NO_PROGRAM);
|
||||
myActiveProgram.Nullify();
|
||||
}
|
||||
return;
|
||||
return Standard_False;
|
||||
}
|
||||
|
||||
myActiveProgram = theProgram;
|
||||
core20fwd->glUseProgram (theProgram->ProgramId());
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
// =======================================================================
|
||||
// function : SetColor4fv
|
||||
// purpose :
|
||||
// =======================================================================
|
||||
void OpenGl_Context::SetColor4fv (const OpenGl_Vec4& theColor)
|
||||
{
|
||||
if (!myActiveProgram.IsNull())
|
||||
{
|
||||
myActiveProgram->SetUniform (this, myActiveProgram->GetStateLocation (OpenGl_OCCT_COLOR), theColor);
|
||||
}
|
||||
#if !defined(GL_ES_VERSION_2_0)
|
||||
else if (core11 != NULL)
|
||||
{
|
||||
core11->glColor4fv (theColor.GetData());
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
// =======================================================================
|
||||
// function : SetPointSize
|
||||
// purpose :
|
||||
// =======================================================================
|
||||
void OpenGl_Context::SetPointSize (const Standard_ShortReal theSize)
|
||||
{
|
||||
if (!myActiveProgram.IsNull())
|
||||
{
|
||||
myActiveProgram->SetUniform (this, myActiveProgram->GetStateLocation (OpenGl_OCCT_POINT_SIZE), theSize);
|
||||
#if !defined(GL_ES_VERSION_2_0)
|
||||
//myContext->core11fwd->glEnable (GL_VERTEX_PROGRAM_POINT_SIZE);
|
||||
#endif
|
||||
}
|
||||
#if !defined(GL_ES_VERSION_2_0)
|
||||
//else
|
||||
{
|
||||
core11fwd->glPointSize (theSize);
|
||||
if (core20fwd != NULL)
|
||||
{
|
||||
//myContext->core11fwd->glDisable (GL_VERTEX_PROGRAM_POINT_SIZE);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
Reference in New Issue
Block a user