gl_PointSize 着色器版本更改时需要扩展

gl_PointSize requires extension when shader version changed

我的 GLSL 着色器与 #version 150 core 配合得很好。顶点着色器输出 gl_PointSize 到一个三角形条带几何着色器,它用它来指示生成对象的大小。

我更改为 #version 300 es 并收到此错误

error C7548: 'gl_PointSize' requires "#extension GL_EXT_geometry_point_size : enable" before use

这有点令人惊讶——我认为扩展通常是您在 版本中需要的东西,以启用在更高版本中提供的功能。现在好像要找回丢失的东西了,不过this table好像还可以用

发生了什么变化,这意味着我不能再使用 gl_PointSize

桌面 OpenGL 和 OpenGL ES 不是一回事。 table 引用桌面 OpenGLx,而不是 any 版本的 OpenGL ES。如果你要求 GLSL 3.00 ES,你会得到 GLSL 3.00 ES.

Desktop GLSL 1.50 不是 GLSL ES 3.00 的较低版本。它也不是更大的版本。它们彼此之间没有任何关系,除了 ES 版本从桌面版本中获取内容。但即便如此也是随意的,通常与版本号无关。

事情是... OpenGL ES 3.00 does include gl_PointSize。但它只是作为 VS 的输出变量。假设这就是您的着色器使用它的方式,那么您的实现在其 OpenGL ES 支持中存在一个错误。