【发布时间】:2011-04-07 23:24:42
【问题描述】:
我想将纹理投影到墙壁或任何物体上。我根据这个 Cg 投影纹理映射 tutorial (ctrl-f "9.3") 修改了这个 tutorial's 着色器,但我得到了一个空白的白色画布。我是着色器新手,不太清楚如何调试(没有 JS 错误),有什么提示吗?
顶点着色器:
uniform mat4 u_modelViewProjMatrix;
uniform mat4 u_normalMatrix;
uniform vec3 lightDir;
attribute vec3 vNormal;
attribute vec4 vTexCoord;
attribute vec4 vPosition;
varying float v_Dot;
varying vec2 v_texCoord;
void main()
{
gl_Position = u_modelViewProjMatrix * vPosition;
v_texCoord = vTexCoord.st * vPosition;
vec4 transNormal = u_normalMatrix * vec4(vNormal, 1);
v_Dot = max(dot(transNormal.xyz, lightDir), 0.0);
}
片段着色器:
uniform sampler2D sampler2d;
varying float v_Dot;
varying vec2 v_texCoord;
void main()
{
vec4 color = texture2DProj(sampler2d,v_texCoord);
gl_FragColor = vec4(color.xyz * v_Dot, color.a);
}
【问题讨论】:
标签: opengl-es glsl webgl shader