据我所知,在渲染点时,gl_PointCoord
始终可用于OpenGL 3中的片段着色器;但另一方面,GLSL 1.20规范说它只有在“点精灵启用”(我打算在致电glEnable(GL_POINT_SPRITE)
之后表示)后才可用。使用不同版本的GLSL/OpenGL时,点精灵如何工作?
看到这两条语句如何冲突,并且GL_POINT_SPRITE
在OpenGL 3中不可用,何时gl_PointCoord
实际上可用?它取决于#version
指令,还是取决于您获得的GL配置文件,或者是什么?
此外,这是如何与点形状相互作用的?据我了解,当MSAA关闭时,点呈现为正方形,而MSAA打开时呈现为圆形。当GL_POINT_SPRITE
可用时,他们似乎总是被渲染为正方形,当它被启用时,很简单,但是如何在OpenGL 3中正确控制它?当一个人想让他们变成平方时,人们应该简单地在点渲染调用时关闭多重采样?
“这是你实际上指的是当你讨论要么正方形或圆形的点。” - 不,当我打开MSAA时,点呈现为圆形。我从不碰触GL_POINT_SMOOTH状态。 – Dolda2000
啊,是的,这是改变了。您可以通过在更新版本的OpenGL中启用或禁用MSAA来更改此行为。它反映了老派OpenGL中'GL_POINT_SMOOTH'的行为。 –
为了正确理解你的答案的第一部分,你是否说我只要获得兼容性配置文件(即使是OpenGL 4兼容性,并使用最新的GLSL'#版本),我就需要启用'GL_POINT_SPRITE'确保'gl_PointCoord'可用?假设GLES2 +始终可用,是否也是安全的? – Dolda2000