據我所知,在渲染點時,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