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