0

次のコードスニペットがあります。

    ctx.texParameteri(ctx.TEXTURE_2D, ctx.TEXTURE_MAG_FILTER, ctx.LINEAR);      
    ctx.texParameteri(ctx.TEXTURE_2D, ctx.TEXTURE_MIN_FILTER, ctx.LINEAR);

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

私のテクスチャのサイズは256x256です

オプション1-私のポリゴン

    const x0 = 100;
const x1 = -x0;
const z0 = x0;
const z1 = -z0;
var vertices = new Float32Array(
    [  x0, 0, z1,  x1, 0, z1,  x1, 0, z0,   x0, 0, z0]);

結果:テクスチャが引き伸ばされるため、ディテールが失われます。

オプション2-私のポリゴン(これはオプション1よりもはるかに小さいポリゴンであることに注意してください)

const x0 = 5;
const x1 = -x0;
const z0 = x0;
const z1 = -z0;
var vertices = new Float32Array(
    [  x0, 0, z1,  x1, 0, z1,  x1, 0, z0,   x0, 0, z0]);

結果:テクスチャの詳細を確認できます。

私の理解では、REPEAT(TEXTURE_WRAP_SおよびTEXTURE_WRAP_T)オプションは、オプション1でも詳細を表示します。オプション1でテクスチャが引き伸ばされるのはなぜですか?誤解しましたか?

これは、ChromeCanaryビルドでWebGLを実行しています。

私は何を間違えましたか?

よろしくお願いします。

4

1 に答える 1

0

テクスチャ座標を次のように変更しました。

コード:var texCoords = new Float32Array(// [1、1、0、1、0、0、1、0]
[100、100、-100、100、-100、-100、100、-100]
);

大きなポリゴン座標と一致します。大きなポリゴンの元の小さなテクスチャの詳細が表示されます。

詳細については、 KhronosWebGLフォーラムを参照してください。

于 2010-12-17T14:15:25.273 に答える