ここでそれらについて書いてみたいと思います。
■用語
DirectXでは、テクスチャアドレッシングモードとテクスチャラッピングモードがあります。
OpenGLでは、テクスチャラッピングモード だけです。
しかも両者でそれぞれの言葉が意味しているものがずれており、
DirectX::アドレッシングモード = OpenGL::テクスチャラッピングモード
という状態となっています。
これは酷いですね。
個人的にはDirectXのアドレッシングモードという部分を廃止して、
各テクスチャの張り方を指定するラッピングモードだけに統一してほしいと思います。
円筒のUVラッピングモードってあまり使いませんし、
必要になったら通常のUVにオフセットや変換式をかませれば済むことでしょう。
■設定方法について
DirectXでは、縮小フィルタ、ミップフィルタ、拡大フィルタの設定がそれぞれ設定できます。
OpenGLでは、縮小フィルタ+ミップフィルタ、拡大フィルタの2つです。
このあたり、最初はすごく困った覚えがあります。
DirextXの縮小フィルタ=D3DTEXF_POINT, ミップフィルタ=D3DTEXF_NONE
これが、
OpenGLだと GL_NEAREST_MIPMAP_NEAREST になるとか。
また、OpenGLではテクスチャフィルタの設定もきちんとやらないと
テクスチャが使用可能にならない点も注意しなくてはなりません。
*RADEON HDについて
そして、RADEON HDとCatalyst 10.7の(少なくとも)組み合わせでは
glTexImage2Dをすべてやり終えた後で、テクスチャフィルタの設定を行う必要があります。
赤本の通りのコードでも実は動かないという可能性があるので、注意が必要です。
もしかしたらシェーダー使わずに、固定機能だけで完結させるならば
このトリックは必要ないかもしれません。
コメント
ここ2週間ほど、Unityに浮気しててDirectXとOpenGLに関して離れていました(汗
まとめてくださりありがとうございました!! 丁度テクスチャまわりに手をつけていたので、参考になりました!!