2

LWJGLのslick-util拡張子を使用してJavaにロードされたクワッドの3Dワールドで、事前に生成されたPNGファイルからテクスチャ座標を使用しようとしています。

テクスチャファイルは192x96ピクセルで、適切にフォーマットされています。6x332x32タイルで構成されています。

3Dクワッドの幅と長さは1.5fです。それらは適切に間隔が空けられています。

正しいテクスチャ座標を取得するのに問題があります。y座標として0.0fから0.333333fを入力すると、表示されている一番上のタイルの高さよりもわずかに高くなります。ただし、0.0f〜0.25fを入力すると、タイルの高さの3分の1になります。X座標のマジックナンバーはまだ見つかりませんが、テクスチャ座標によると96の1/4が24である理由、または私が間違っていることを誰かが説明してくれるかもしれません。クワッドサイズとテクスチャの衝突の可能性があると思います。

スクリーンショット

立方体の上部は、テクスチャ座標(0.0、0.0f)、(0.0、0.333333f)、(0.166666f、0.333333f)、(0.166666f、0.0f)を使用しており、左上から反時計回りに移動して適用されます。右上。この場合も、メインのテクスチャファイルは192x96(96は高さ)になるように配置された32x32タイルです。

タイルの1つの上部に白い線を配置して境界線を確認し、下部に黒い線を配置してから、その下の次のタイルの上部に白い線を配置したことに注意してください。テクスチャ「ブリード」があまりにも下にあります。ご覧のとおり、他のテクスチャにはさらに奇妙な座標があります。

画像の下部ではなく上部が1.0であると仮定してテクスチャ座標を配置すると、中央に四角形があるはずの長方形の穴がある奇数の正方形が生成されます。

TEX_ENVGL_MODULATEを使用しています。

4

2 に答える 2

4

テクスチャサイズは通常2の累乗です。192x96テクスチャのサイズが256x128または256x256テクスチャに変更されたと思われます。ただし、これは実際に見つけた値を説明するものではありません...しかし、テクスチャのサイズを256x256に変更し(サイズを大きくし、拡大縮小しないでください!)、それに基づいてテクスチャ座標を計算すると、問題が発生します。あちらへ。

于 2011-09-28T19:23:08.850 に答える
0

Javaについてはわかりませんが、ObjectiveCとopenGLESの画像アトラスでは、アトラスからテクスチャを選択するときに参照しているものよりもテクスチャを小さくする必要があります。

にじみを防ぐために、テクスチャ画像の間に十分なギャップを残しましたか?

于 2011-09-28T19:11:37.527 に答える