« テクスチャ ブレンディング | メイン | 文字列の表示 »
2007年03月29日
吉里吉里 DirectX拡張:: テクスチャの分割・結合
Tweet @jin1016をフォローHWのサポートしているテクスチャの最大サイズが1024*1024であれば、640*480を1枚で表示できるが、512*512の場合だと2枚のテクスチャが必要になる。
最近のビデオカードなら1024*1024は余裕だと思うが、古いビデオカードでは無理だろう。
その場合、テクスチャを分割して表示することを考えなくてはならない。
単純に表示するだけであれば、それほど苦労しないが、拡大縮小、回転を考慮するとなかなか面倒になる。
では、古いビデオカードは切り捨てるか?
もし、切り捨てたとしても、2の累乗制限の問題がある。
制限のないビデオカードもあるが制限のあるビデオカードもある。
32ビットカラーの場合、1024*512で2MB、640*480で1.17MBとなり、2倍近く無駄遣いしていることになる。
無駄遣いを軽減するアプローチとしては、2の累乗制限下では2つ考えられる。
1. 複数の画像を1つのテクスチャにまとめて、そこから切り取って貼る。
2. 1つの画像を複数のテクスチャに分けて、描画時に複数のポリゴンを使って描く。
1.の場合は、事前にまとめておくか、実行時にまとめる必要がある。
事前にまとめる場合、何らかのツールで切り出さないと扱いづらい。と言うか、手打ちなどはあまり現実的でない。
実行時に自動的にまとめる場合は、切り出しなどは考えなくていいが、あらかじめ人がまとめるよりは無駄が出やすい。デザイナーさんにくっつけてもらう場合は、それぞれの大きさなどを調整しながら、ギリギリまでつめることも出来るだろうけど、自動ではそれは難しい。
ただ、そういう職人的な部分がなくなる分、効率は上がると思う。
2.の場合は、1に比べて実行時の効率が悪い。
大量に出さない限りそう困ることはないと思うが、気持ち的には効率が良い方法を使いたい。
でも、最大サイズの制限を考えると、やはり2.の分割かな。
それと、1.の方法の手動でくっつけたものも使えるようになってた方が良さそうだ。
投稿者 Takenori : 2007年03月29日 21:51
comments powered by Disqus