2012-07-30 3 views
5

テクスチャラッピングに関する問題に直面しています。アーチファクトを引き起こしている。私のコードベースが大きく成長したので、私が考えることができる唯一の方法は、特定のテクスチャがレンダバッファに描画される前にアーティファクトを引き起こしているパラメータのカテゴリに該当するかどうかを調べることです。レンダリング時にglTexParameteri()を設定するのは悪いですか?

だから大丈夫ですか?

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_MIRRORED_REPEAT); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_MIRRORED_REPEAT); 

レンダリングループ中にglBindTextureを設定しましたか?または各レンダリングフレームの間に操作を増やすようにFPSを実行しますか?

答えて

8

通常、テクスチャパラメータを変更すると、キャッシュがそのまま残り、アクセスパターンのみが変更されるため、パフォーマンスにはあまり影響しません。

しかし、この非常に具体的な使用シナリオでは、「サンプラーオブジェクト」という新しいバージョンのOpenGLが導入されています。私はあなたがそれらを見たいかもしれないと思う。

+0

ありがとうございました。 – Gamer

+3

テクスチャ/サンプリングについて、[Arcsynthesis chapter 14](http://www.arcsynthesis.org/gltut/Texturing/Tutorial%2014.html)が参考になりました。 – FriendlyGuy

3

これは一般的なルールです。必要のない状態は変更しないでください。

テクスチャにミラーリングリピートラッピングモードを使用する固有のプロパティがある場合、は常ににそのプロパティが必要です。そのため、テクスチャは元々そのラッピングモードで設定されていたはずです。

レンダリング時にが必要な場合は、を実行してください。そうすることができます。パフォーマンスに悪影響を与えるかどうかは、CPUがレンダリングコードにどのように縛られているかによって決まります。

注:

私のコードベースは巨大な成長してきたので

これはを行うには十分な理由になることはありません。あなたのコードを正しい方法で実行する方法を見つけられない場合は、コードベース内で何か悪いことが起きた可能性があります。このテクスチャの問題に対処する前に、に修正する必要があります。

+0

私は同意しますが、通常はテクスチャサンプリングパラメータはテクスチャの内容に結びついていますが、異なるサンプリングパラメータで単一のテクスチャを使い分けることができるケースがいくつかあります。例えば、用途に応じて、ラップされたサイクリックまたはミラーサイクリックのいずれかで使用されるいくつかのLUTを持つことができます。例えば、異なるバンドテクスチャは、異なるテクスチャ生成方法を用いた大理石シェーダ(ミラーリングサイクル)および木材シェイダー(ラップサイクル)で使用することができる。 – datenwolf

+0

ありがとうございます。それは今、完全に意味をなす:-) – Gamer

関連する問題