2
我想將紋理投影到牆上或任何物體上。基於這個Cg投影紋理映射tutorial(ctrl-f「9.3」),我修改了這個tutorial's着色器,但是我得到一個空白的白色畫布。我是着名的新手,不太清楚如何調試這個(沒有JS錯誤),任何提示?通過WebGL使用GLSL的投影紋理映射
頂點着色器:
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);
}
非常感謝湯米。我通過使用texture2D並在頂點着色器中執行以下操作來實現它:\t \t vec4 clip = u_modelViewProjMatrix * vPosition; vec3 ndc = clip.xyz/clip.w; v_texCoord = 0.5 *(ndc.xy + 1.0); – user696142 2011-04-08 00:32:49