0

Phaser で最初のゲームを作成しようとしましたが、独自の画像で tileSprite 関数を使用するとエラーが発生しました。

this.game.load.image('ground', 'assets/ground.png');
this.ground = this.game.add.tileSprite(0, game.world.height - 432, game.world.width, 281, 'ground');
this.ground.tileScale.setTo(2, 2);

「ground.png」が黒く表示され、コンソールに次のエラーが表示されます。

エラー: WebGL: テクスチャは、OpenGL ES 2.0.24 仕様セクション 3.8.2 に従って、黒のようにレンダリングされます。これは、2D テクスチャであり、縮小フィルターがミップマップを必要とせず、その幅があるためです。または、高さが 2 の累乗ではなく、ラップ モードが CLAMP_TO_EDGE とは異なります。

同じコードで他の画像 (デモ フェイザー ゲームから) を使用しても、このエラーは発生しません。

これが私のPNGです(エラーが発生する人)

これは別のPNGで、うまく機能しています

4

1 に答える 1

1

スプライトの幅と高さは 2 の累乗でなければなりません:

エラー: WebGL: テクスチャは、OpenGL ES 2.0.24 仕様セクション 3.8.2 に従って、黒のようにレンダリングされます。これは、2D テクスチャであり、縮小フィルターがミップマップを必要とせず、その幅があるためです。または、高さが 2 の累乗ではなく、ラップ モードが CLAMP_TO_EDGE とは異なります。

(私による強調)

あなたのフェンスは幅 128 ピクセル、高さ 16 ピクセルの 2 の累乗のスプライトですが、「Tapis」(それが何であれ) は 19x13 であり、2 の累乗ではありません。

2 のべき乗は、その背後にある実際の数学です。つまり2^nnは任意の正の整数です。すべての幅と高さの測定値は、2 の累乗に一致する値でなければなりません。

于 2014-02-27T13:31:52.807 に答える