1

これが私が使用しているライブラリのリファレンスです

openglの壁に貼り付けたときのテクスチャは、解像度が低く、品質が悪いのですが、どうすれば改善できますか?

コード

ground->m_texture = new cTexture2D();
fileload = ground->m_texture->loadFromFile(RESOURCE_PATH("resources/images/shadow.bmp"));
ground->setUseTexture(true);
ground->m_texture->setSphericalMappingEnabled(true);//this line is for circular objects, but without it texture doesnt even show up

例から-それがどのように見えるべきか

ここに画像の説明を入力してください

私の実装でどのように見えるかここに画像の説明を入力してください

4

1 に答える 1

3

さて、何が起こっているのかは次のとおりです。球面マッピングは、頂点からビューポートへのベクトルと頂点の法線に基づいてテクスチャ座標を生成し、一種のフィッシュアイ画像にマッピングされた球面反射方向にマッピングします。ジオメトリは非常に平坦に見えるため、この方法で生成されるテクスチャ座標の変化はかなり小さくなります。つまり、画像を大幅に拡大していることになります。テクスチャフィルタリングモードが最も近いフィルタリングに設定されている場合、これが起こります。

解決策:球形のテクスチャマッピングを使用しないでください。反射をエミュレートする場合は、キューブマップを使用して(反射ベクトルの小さな偏差に対してはるかに優れた動作をします)、線形フィルタリングモードに切り替えます。

于 2012-09-18T13:52:11.643 に答える