[英]glSecondaryColorPointerEXT replacement using Qt5 OpenGL 3.3
我正在学习用Qt5重写一些旧代码的OpenGL。 他们使用glSecondaryColorPointerEXT()。 在检查了通用视频卡中对OpenGL的当前支持之后,我选择了Qt5的类QOpenGLFunctions_3_2_Core来访问OpenGL函数。
此功能是否有OpenGL 3.2版本或替换方法?
在OpenGL 3.2中,您应该使用着色器,此外,到此时,您应该避免使用gl_SecondaryColor
类的旧功能。 在基于着色器的引擎中,适当替换第二颜色只是一个附加的通用顶点属性。 我解释了一个与OpenGL ES 2.0相关的非常相似的问题 ,我的回答可能会有帮助。
简而言之,OpenGL 3.0中已弃用glVertexPointer (...)
, glColorPointer (...)
, glSecondaryColorPointer{EXT} (...)
。 在3.2核心环境中,您根本无法使用它们。 因此,您需要学习着色器和glVertexAttribPointer (...)
。
在核心GL 3.2中使用“主要”和“次要”顶点颜色的顶点着色器看起来像这样:
#version 150 core
uniform mat4 mvp;
in vec4 vtx_pos;
in vec4 vtx_color1;
in vec4 vtx_color2;
out vec4 color;
void main (void) {
gl_Position = mvp * vtx_pos;
color = vtx_color1 * vtx_color2; // It is up to you to decide what to do
// with the primary and secondary
// colors, this is just for show...
}
您可以使用glVertexAttribPointer (...)
使用从GLSL顶点着色器查询的属性位置(链接后),将数据提供给vtx_pos,vtx_color1和vtx_color2。 所有这些完全消除了对glSecondaryColorPointerEXT (...)
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.