5

1 つの要素内でテクスチャを繰り返す必要があります。WebGLでも可能ですか?

次のいずれかを試しましたが、うまくいきませんでした。

ctx.texParameteri(ctx.TEXTURE_2D, ctx.TEXTURE_WRAP_S, ctx.CLAMP_TO_EDGE);
ctx.texParameteri(ctx.TEXTURE_2D, ctx.TEXTURE_WRAP_T, ctx.CLAMP_TO_EDGE);

ctx.texParameteri(ctx.TEXTURE_2D, ctx.TEXTURE_WRAP_S, ctx.REPEAT);
ctx.texParameteri(ctx.TEXTURE_2D, ctx.TEXTURE_WRAP_T, ctx.REPEAT);

助けてくれてありがとう!

4

2 に答える 2

6

これらのパラメータは、各テクスチャで設定する必要があるものであり、グローバル設定ではないことを知っておくことが重要です。したがって、コードはおそらく次のようになります。

gl.bindTexture(gl.TEXTURE_2D, texture);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.REPEAT);
// Set up more texture state, like filter modes...

もちろん、teximage2D を呼び出すときにそれを行う必要はありません。重要な部分は、最初に適切なテクスチャをバインドしていることです。この方法でラップを設定してもまだ機能しない場合は、ドライバーのバグが原因である可能性があります。

とはいえ、デフォルトのテクスチャ ラップ モードはとにかく REPEAT にする必要があることを思い出すと、なぜ問題が発生するのかわかりません。

于 2011-10-10T02:40:20.443 に答える
2

一部のブラウザ、OS、GPU の組み合わせでは、2 のべき乗テクスチャに gl.REPEAT を設定することしかできません。2016 年現在、Safari-El Capitan-HD4000 の場合も同様です。

于 2016-02-28T00:05:06.873 に答える