【发布时间】:2016-02-02 10:53:03
【问题描述】:
我正在编写一个带有纹理的 webgl 程序。
只要图像未加载,texture2D 函数就会返回 vec4(0.0, 0.0, 0.0, 1.0)。所以所有的物体都是黑色的。
所以我想检查一下我的 sampler2D 是否可用。
我已经试过了:
<script id="shader-fs" type="x-shader/x-fragment">
precision mediump float;
varying vec2 vTextureCoord;
uniform sampler2D uSampler;
void main(void) {
vec4 color = texture2D(uSampler, vec2(vTextureCoord.s, vTextureCoord.t));
if(color.r == 0.0 && color.g == 0.0 && color.b == 0.0)
color = vec4(1.0, 1.0, 1.0, 1.0);
gl_FragColor = color;
}
</script>
但这当然没有意义,因为纹理可能是黑色的。
有人可以帮我吗?如何检查我的纹理图像是否已加载到片段着色器中?
【问题讨论】:
-
在加载纹理之前,您不能也不应该绘制或绑定占位符纹理(如 1x1 白色)。
标签: javascript textures webgl