繁体   English   中英

使用Qt5 OpenGL 3.3替换glSecondaryColorPointerEXT

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM