您填充值的变量是否决定了您正在使用的精度,等号的右侧?
例如,这里的精度说明符是否有任何意义上的区别:
gl_FragColor = lowp vec4(1);
Run Code Online (Sandbox Code Playgroud)
这是另一个例子:
lowp float floaty = 1. * 2.;
floaty = lowp 1. * lowp 2.;
Run Code Online (Sandbox Code Playgroud)
如果你采用一些浮点数,并从它们创建一个向量或矩阵,那么该向量或矩阵是否会采用您填充它的值的精度,或者这些值是否会转换为另一个精度级别?
我认为优化这个最好能回答这个问题:
dot(gl_LightSource[0].position.xyz, gl_NormalMatrix * gl_Normal)
Run Code Online (Sandbox Code Playgroud)
我的意思是,它是否需要走这么远,如果你想尽可能快,或者它有些无用吗?
lowp dot(lowp gl_LightSource[0].position.xyz, lowp gl_NormalMatrix * lowp gl_Normal)
Run Code Online (Sandbox Code Playgroud)
我知道你可以定义float的默认精度,并且这可以用于之后的向量和矩阵.假设为了教育的目的,我们之前已经定义了这个:
precision highp float;
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用本教程,但我遇到了两个问题,其中一个问题可以在这里找到.另一个是以下.
为方便起见,这是应该工作的代码,这里是一个jsfiddle.
顶点着色器:
uniform mat4 projectionMatrix;
uniform mat4 modelViewMatrix;
attribute vec3 position;
uniform vec3 normal;
varying vec3 vNormal;
void main() {
test = 0.5;
vNormal = normal;
gl_Position = projectionMatrix *
modelViewMatrix *
vec4(position,1.0);
}
Run Code Online (Sandbox Code Playgroud)
片段着色器:不同的mediump vec3 vNormal;
void main() {
mediump vec3 light = vec3(0.5, 0.2, 1.0);
// ensure it's normalized
light = normalize(light);
// calculate the dot product of
// the light to the vertex normal
mediump float dProd = max(0.0, dot(vNormal, …Run Code Online (Sandbox Code Playgroud)