【发布时间】:2015-02-16 11:20:50
【问题描述】:
我学习 WebGL。下一个着色器工作正常:
// vertex.shader
// precision mediump float;
attribute vec4 a_Position;
attribute float a_PointSize;
void main(){
gl_Position = a_Position;
gl_PointSize = a_PointSize;
}
和
// fragment.shader
precision mediump float;
uniform vec4 u_FragColor;
void main(){
gl_FragColor = u_FragColor;
}
为什么需要为片段着色器设置精度?顶点着色器没有这个就可以工作,但是片段着色器没有这个代码行就不能工作(如我所见)。为什么存在不同的行为?
我以前读过this,但对我没有帮助。
【问题讨论】:
-
因为 GLSL ES 标准是这么说的。 'Big' GLSL(不是 ES)没有这个要求。
-
@keltar 感谢您提供的信息。我从来没有在我的 GLSL 着色器中使用过精度语句,并且对这个问题感到困惑。对我来说只是另一种知识。实际上,根据我所见,精度语句(如 highp)可能会根据 GPU 导致问题。
-
我在没有精度设置的情况下遇到了问题,完全不知道错误来自哪里......单元查看这篇文章
标签: opengl-es webgl shader precision