据我了解,在渲染点时,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中正确控制它?当一个人希望它们成为正方形时,是否应该简单地在点渲染调用周围关闭多重采样?
答案 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) }。驱动程序在兼容性配置文件中正常工作。