使用不同版本的GLSL / OpenGL时,点精灵如何工作?

时间:2013-09-21 19:34:26

标签: opengl glsl opengl-3

据我了解,在渲染点时,gl_PointCoord在OpenGL 3中的片段着色器中始终可用;但是,另一方面,GLSL 1.20规范说它仅在“点精灵被启用”时才可用(我假设它是在调用glEnable(GL_POINT_SPRITE)之后的意思)。

看到这两个语句是如何冲突的,而GL_POINT_SPRITE在OpenGL 3中是不可用的,gl_PointCoord何时实际可用?它取决于#version指令,还是取决于获得的GL配置文件,还是什么?

此外,它如何与点形状相互作用?据我了解,当MSAA关闭时,点呈现为正方形,而当MSAA打开时,点呈现为圆形。当GL_POINT_SPRITE可用时,它们似乎总是在启用时呈现为正方形,非常简单,但是如何在OpenGL 3中正确控制它?当一个人希望它们成为正方形时,是否应该简单地在点渲染调用周围关闭多重采样?

2 个答案:

答案 0 :(得分:1)

gl_PointCoord 总是"可用" (核心 OpenGL中GL_POINT原语的(填充有意义的值)。在兼容性配置文件或不提供GLSL 130的实现中,您必须启用GL_POINT_SPRITE

答案 1 :(得分:0)

在此处添加相关错误:无论您是否使用{{1},Sandy Bridge GPU的Windows 7-10驱动程序始终在GL 3.1核心配置文件中为gl_PointCoord返回(0,0) }。驱动程序在兼容性配置文件中正常工作。

相关问题