【发布时间】:2018-03-07 01:35:34
【问题描述】:
在 OpenGL ES 2.0 (Shading Language 1.00) 中,如果 GL_FRAGMENT_PRECISION_HIGH 未定义,使用 highp 限定符限定 varying 顶点着色器变量是否会影响性能?
例如,当highp 在片段语言中不可用时,将以下片段着色器与以下两个顶点着色器中的每一个链接起来,一次一个,会产生等效的程序吗?
片段:
#ifdef GL_FRAGMENT_PRECISION_HIGH
varying highp vec2 vTextureCoord;
#else
varying mediump vec2 vTextureCoord;
#endif
...
顶点 1:
...
attribute vec2 aTextureCoord;
varying highp vec2 vTextureCoord;
void main() {
...
vTextureCoord = aTextureCoord;
}
顶点 2:
...
attribute vec2 aTextureCoord;
#ifdef GL_FRAGMENT_PRECISION_HIGH
varying highp vec2 vTextureCoord;
#else
varying mediump vec2 vTextureCoord;
#endif
void main() {
...
vTextureCoord = aTextureCoord;
}
GLSL ES 1.00 spec 中引用 GL_FRAGMENT_PRECISION_HIGH 的部分是 4.5.4。
【问题讨论】:
-
版本一会编译/链接失败
-
@gman 你确定吗?我尝试在 Firefox 中使用 webgl 将其设置为顶点着色器中的
highp和片段着色器中的mediump(没有预处理器检查),并且它有效。还是因为提示已被忽略,因为它在桌面上,因此没有不匹配? -
IIRC 在不支持 highp 的机器上会失败。我知道没有任何台式机可以做到这一点。你基本上需要一部旧手机来测试。
标签: webgl opengl-es-2.0 glsles