2007年8月14日

繰り返していれば

NeHe Productions
ここ半年、暇なときにぼちぼち見てたサイト。
OpenGLのチュートリアルで有名。
3DプログラミングはDirectX3の時代にどうやるんだろうと思い、DirectX5の時代にshi3z氏の本を買っただけでできるようになったつもりになって、DirectX8のときにPrismShotを作りかけてやっとこ動かしたってレベルです。
3Dプログラミングには、3DAPI以外に把握しておかないと理解できない要素が多々あるように思います。
数学然り、頂点の属性然り、ビデオカードが持っている機能然り・・・。
最近、「もしかしてゲームループのひとコマに対してレンダリング処理?(言葉が違うかもしれませんがご容赦を)は一度にする必要はない」と思いました。
これはXbox360でアイマスをやってから顕著に気づいたのですが、事務所でプレゼントを確認するシーンがあります。
プロデュースしているキャラの会話から含めると、奥から「背景(2D)→キャラ(3D)→選択肢やメッセージウィンドウ(2D)→プレゼント(3D)」の順にレンダリングしているように思いました。
OpenGLやDirectXは座標系設定で奥行きを無効にすることができます。
これを使ってテクスチャをさも2D画像のように見せる事ができます。
前述の「レンダリング処理」は、奥から順に書かれているものの数にあたります。
PrismShotの時は、この考えがなくDirect3DXという支援ライブラリでウィンドウを表示していました。
これはそれぞれ別のものだと考えていて、座標系の工夫で対応できるとは思っていませんでした。
3D機能を高機能な2Dとして使えることを紹介している記事を意外にも見落としていたように思います。
これに気づいただけでなんだかできることが増えたように感じます。
とはいえ具体的に何かするわけでもないですが。

0 件のコメント: