我可以在OpenGL ES 2.0中使用哪些版本的GLSL?

时间:2012-01-15 18:16:35

标签: java android opengl-es glsl opengl-es-2.0

尽管谷歌搜索数小时,我似乎无法找到明确的答案。有人可以告诉我发生了什么事吗?我收到的错误是“不支持版本140”。这是我的设备(Kindle Fire)还是GL ES 2.0?我需要添加库还是其他什么?

3 个答案:

答案 0 :(得分:32)

OpenGL ES 2.0 spec引用GLSL ES,与GLSL不同。

规范GLSL ES规范说:

  

此版本的语言基于桌面GLSL的1.10版。但是,它包含许多版本1.20但不是1.10的功能。

查看规范以了解支持的内容。

答案 1 :(得分:14)

OpenGL ES不是OpenGL,因此类似OpenGL ES的着色器语言不是OpenGL的着色器语言。它们相似,但它们不一样。因此,没有与GLSL ES版本匹配的桌面GLSL版本。

答案 2 :(得分:10)

你实际上不需要添加任何库,140对于Kindle Fire来说太新了。删除版本规范或减少它,直到着色器编译。您可能需要修复着色器中的其他一些错误,因为该语言的各个版本确实存在一些差异。

您还可以使用GL_SHADING_LANGUAGE_VERSION查询glGetString()以获取您设备支持的GLSL版本(至少保证为100 - ES 2.0是第一个使用着色语言的版本)。< / p>

另外,正如其他人所提到的,OpenGL ES GLSL与OpenGL ES的语言不同(我认为这很明显,OpenGL ES不是OpenGL),因此版本号不匹配。然而,GL_ARB_ES2_compatibility及其对ES3,ES3.1和ES3.2的扩展,其中描述了ES /非ES GLSL语言的映射,并且使用它们可以获得类似ES的功能。非ES上下文。