mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-14 13:30:48 +03:00
0025213: Visualization, TKOpenGl - do not use deprecated built-ins in GLSL shaders
Inherit NCollection_Buffer from Standard_Transient, do not use incomplete NCollection_Handle. OpenGl_Context, add methods ActiveProgram(),BindProgram() to manage currently active GLSL program. Add method ::ToUseVbo(). OpenGl_ShaderProgram, setup locations of pre-defined vertex attributes occVertex, occNormal, occTexCoord, occColor before linkage. Remove methods OpenGl_ShaderProgram::Bind(), ::BindWithVariables() and ::Unbind() - OpenGl_Context::BindProgram() should be used instead. Introduce class OpenGl_VertexBufferCompat, which emulates VBO behavior on systems without VBO (compatibility with broken OpenGL drivers on Windows). OpenGl_PrimitiveArray - use OpenGl_VertexBufferCompat when VBO is unavailable, remove duplicated code. Use OpenGl_VertexBuffer::HasNormalAttribute() method to activate lighting. OpenGl_Text - use OpenGl_VertexBufferCompat, eliminate duplicated code. Changes in OpenGl_VertexBuffer, drop methods BindFixed()/UnbindFixed(). Superseded by new methods BindAllAttributes()/UnbindAllAttributes() which handle active GLSL program, when it is set.
This commit is contained in:
@@ -23,10 +23,10 @@
|
||||
// vertex attributes from compatibility profile. In the next
|
||||
// release old functionality will be removed from shader API.
|
||||
#ifdef VERTEX_SHADER
|
||||
#define occColor gl_Color //!< Vertex color
|
||||
#define occNormal gl_Normal //!< Normal coordinates
|
||||
#define occVertex gl_Vertex //!< Vertex coordinates
|
||||
#define occTexCoord gl_MultiTexCoord0 //!< Texture coordinates
|
||||
attribute vec4 occVertex;
|
||||
attribute vec3 occNormal;
|
||||
attribute vec4 occTexCoord;
|
||||
attribute vec4 occColor;
|
||||
#endif
|
||||
|
||||
// Matrix state
|
||||
|
@@ -1,12 +1,12 @@
|
||||
in vec4 aPosition;
|
||||
in vec4 occVertex;
|
||||
|
||||
//! Normalized pixel coordinates.
|
||||
out vec2 vPixel;
|
||||
|
||||
void main (void)
|
||||
{
|
||||
vPixel = vec2 ((aPosition.x + 1.f) * 0.5f,
|
||||
(aPosition.y + 1.f) * 0.5f);
|
||||
|
||||
gl_Position = aPosition;
|
||||
}
|
||||
vPixel = vec2 ((occVertex.x + 1.f) * 0.5f,
|
||||
(occVertex.y + 1.f) * 0.5f);
|
||||
|
||||
gl_Position = occVertex;
|
||||
}
|
||||
|
Reference in New Issue
Block a user