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

问题描述:

尽管花费了数小时的时间,但我似乎无法找到明确的答案。有人能告诉我发生了什么事吗?我遇到错误,比如说“不支持140版”。这是我的设备(Kindle Fire)还是GL ES 2.0?我是否需要添加库或任何东西?我可以在OpenGL ES 2.0中使用哪些GLSL版本?

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

您还可以使用glGetString()查询GL_SHADING_LANGUAGE_VERSION以获取设备支持的GLSL版本(至少保证为100- ES 2.0是第一个具有着色语言的版本)。另外,正如其他人所提到的,OpenGL ES GLSL与OpenGL ES不同(我认为这很明显,OpenGL ES不是OpenGL),所以版本号不匹配。然而,有GL_ARB_ES2_compatibility及其对ES3,ES3.1和ES3.2的扩展,其中描述了ES /非ES GLSL语言的映射,并且使用那些可能在非ES上获得ES类功能上下文。

+3

我以为140年已经很老了。 ( – 2012-01-15 18:25:45

+5

)如果某些东西支持OpenGL ES 2.0,它支持哪种版本的GLSL?(至少,我的意思是至少) – BrainSlugs83 2013-09-03 01:49:08

+0

@ BrainSlugs83:如果有东西支持OpenGL ES 2.0,保证支持GLSL ES 100.当人们看到'#version ...'指令并立即认为苹果(桌面GLSL)在某种程度上可与橙子(嵌入式GLSL)相比时,在比较这些数字时存在很多混淆。它们在很多方面都很相似,但是在很多方面都不相同(版本编号是他们分歧很大的一个领域)。看看:http://www.opengl.org/registry/gles/ - 如果你看下标题为“OpenGL ES 2.0 Specific”,它告诉你与之相关的GLSL ES版本 – 2013-09-29 23:40:08

OpenGL ES 2.0 spec是指GLSL ES,与GLSL不一样。

该规范GLSL ES规范说:

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

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

+4

显然我在使用谷歌搜索很可怕。好的。 – 2012-01-15 18:29:09

+0

(对不起,不禁要嘲笑你的评论) – 2013-06-27 16:38:12

+0

值得一提的是,OpenGL ES 2.0规范声明它至少支持GLSL ES 1.0。 – 2014-10-02 09:19:44

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