DrawPrimitiveUpを減らす(1)〜なぜかポリゴンことはじめ〜

まあ、多分みんな似たようなことをやってると思われるが、実装例が見受けられないので、書いてみるといいと思いました。先ずは2Dをポリゴンでやることについてタラタラ書くつもりなので、例を見たいだけのひとは次回以降のエントリで。


バーチャファイターが確か94年ぐらいだったから、ポリゴンポリゴン云われて10年は余裕で越えてるんですねぇ(何となくバーチャが思いついただけで、ポリゴンが本格的にゲームに使われるようになったのはもちょっと前だし、ポリゴン使うってだけなら相当昔に遡る)。バーチャは、ポリポリカクカクとか相当揶揄されたけれども、実はキレイに見える物体をポリゴンだけでリアルタイムに描くには、現在の水準から云ってもまだキツいのが実際のところです。そこでテクスチャーマッピングつう技術が使われるようになりました。テクスチャーマッピングってのは、無味乾燥なポリゴンに画像(テクスチャ)をはっつけてキレイに見せよう、つうハリボテ精神溢れる技術なんですが、これが効果てきめん、バーチャ2は目を見張るほどグラフィックが向上しました、つう話なのですが、このテクスチャーマッピングは今でも現役選手のスゴイやつです。

さてさて、ポリゴン(3次元空間上にある三角形)に画像をペタリと張って表示してやるわけなのですが、ポリゴンは当然遠近法によって歪みます。だもんで、テクスチャも遠近法に則った感じで歪ませてやる必要があるのです。相当ぶっちゃけると、「消失点*1に近づくにつれ画像を縮小」「ポリゴンの回転にあわせて画像も回転」をしてやればOKです。これらの画像処理は、元画像の各座標を回転拡縮後の座標に変換してやったりしてできるのですが、計算量が多くCPUへの負担が大きいので、専用のハードウェアにやらせるのが一般的です。グラフィックカードに計算させるってことですね。つうことでOSからして3Dに非ずんばパソコンでなしとか猫も杓子も3Dの昨今、大抵のユーザさんは回転拡縮機能をもった端末をお持ちなんですね。

そゆことで、未だ2Dの井戸から抜け出せない我々なんですが、折角くっついてる回転拡縮機能を使ってやろう、つうのが今回の趣旨です。古来より回転&拡縮はローコスト*2ハイパフォーマンスな演出で、それは今でも健在なのです。3Dを使える環境ではあるのですが、3次元空間上に2D平面のスクリーンを設置してやって、そこに画像を置いていけば、2Dになるよって考えです。やっと始まった。

今日はこのへんまで。なお、このエントリは、ONIONさんに判ってもらうことを目標に記述してみたのですが、実際のところは如何なものなのでしょうか。ふがふがふおふお。

*1:2点透視図画法とか中学でやったでしょう。

*2:製作作業的に