私は WebGL で既存のプロジェクトに取り組んでおり、テクスチャに問題があります。正しいテクスチャを正しいオブジェクトに設定するのに問題があります。khronos.org フォーラムには、スクリーンショットと何が起こるかのコードがあります。
http://www.khronos.org/message_boards/viewtopic.php?f=43&t=5203
現時点では、すべてがどのように機能するかを学ぶためだけに小さなボックスを作成していますが、壁と床からテクスチャを取得します。
http://tinypic.com/r/23mr1j8/6
前もって感謝します。
ここに「handleloadedtexture」があります
function handleLoadedTexture(texture, image) {
gl.bindTexture(gl.TEXTURE_2D, texture);
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE,
texture.image);
if (isPowerOfTwo(texture.image.width) && isPowerOfTwo(texture.image.height)) {
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
} else {
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
}
gl.bindTexture(gl.TEXTURE_2D, null);
texturesToLoad--;
}
すべてのテクスチャが読み込まれました。この部分で何かを変更すると、それらを切り替えることができます。
gl.activeTexture(gl.TEXTURE0);
gl.bindTexture(gl.TEXTURE_2D, texture0);
gl.uniform1i(shaderProgram.texture0Uniform, 0);
gl.activeTexture(gl.TEXTURE0 + 1);
gl.bindTexture(gl.TEXTURE_2D, texture1);
gl.uniform1i(shaderProgram.texture1Uniform, 1);
gl.activeTexture(gl.TEXTURE0 + 2);
gl.bindTexture(gl.TEXTURE_2D, texture2);
gl.uniform1i(shaderProgram.texture2Uniform, 2);
gl.activeTexture(gl.TEXTURE0 + 3);
gl.bindTexture(gl.TEXTURE_2D, texture3);
gl.uniform1i(shaderProgram.texture3Uniform, 3);
私のshader:fsは次のようになります:
<script id="shader-fs" type="x-shader/x-fragment">
#ifdef GL_ES
precision highp float;
#endif
varying vec2 vTextureCoord;
varying float vTextureID;
varying vec4 vColor;
uniform sampler2D uTexture0;
uniform sampler2D uTexture1;
uniform sampler2D uTexture2;
void main(void) {
vec4 textureColor = texture2D(uSampler, vec2(vTextureCoord.s, vTextureCoord.t));
if (vTextureID < 0.1)
gl_FragColor = texture2D(uTexture0, vTextureCoord.st);
else if (vTextureID < 1.1)
gl_FragColor = texture2D(uTexture1, vTextureCoord.st);
else if (vTextureID < 2.1)
gl_FragColor = texture2D(uTexture2, vTextureCoord.st);
else if (vTextureID < 3.1)
gl_FragColor = texture2D(uTexture3, vTextureCoord.st);
あなたはそれに何か問題があるのを見ることができますか?