透視座標変換の可能性

DXRubyはノーマルな機能拡張は、基本的には終わりと考えている。
しばらく様子見て、0.1.0にでもしよう。
んで、0.2.0に向けて新機能を考えていく、とかになるかなー。


新機能としては、さっきも書いた背景描画なども考えていて、これは何らかの形でイメージオブジェクトを高速編集するようなものになるかもしれない。
テクスチャか、サーフェスか、そのへんのものを扱う、Imageとはまた別のクラスになるか。
マップチップを使った描画をImageオブジェクトとWindow.drawでやると、意外に負荷がでかくて、たとえば16*16で640*480を埋めると、うちでもしょぼいやりかたをすると60fpsで負荷80%超えてきてしまう。
これでは後ろに隠れることができる建物とか木を表現するのがきつい。
40*30で1200枚の描画だからもっと余裕があるはずだとは思っていたのだが、ひょっとしたらマップの2次元配列の参照に時間がかかってるのかもしれない。
map[x, y, "town1"]みたいな形でマップデータの3次元配列か2次元配列+hashを高速参照できる何かがあるといい可能性がある。
このあたりはまた別に検証する必要があるだろう。
こっち方面はDXRuby本体じゃなくDXRubyExtensionネタになってしまうのだが。


あとは、描画まわりの根本的な革新だ。
DirectX Graphicsを使っている関係で、フォントはまだD3DXSpriteだが、画像はポリゴンにテクスチャを貼って描画している。
画面と平行にポリゴンを配置しているから、2Dに見えているだけで、実際には3Dなのだ。
で、ここに新しい可能性がある。
とりあえず、マジメに3Dをするつもりは無いと先に言っておく。
そんな知識もないし、経験もないし、熱意もない。3ナイ。
じゃあ何を考えているのかというと、Star Rubyのような透視座標変換が、ああいうテクニックじゃなく、単純にポリゴンを傾けたらできてしまうのではないか、ということだ。
もちろんそこまで単純な話ではなくて、例えばテクスチャを繰り返して地平線まで描くにはどうしたらいいのか、とか考えないといけないことは山ほどあるのだが、そういう3D技術を一部だけ取り入れると、2Dライブラリでも表現力が大きく向上するのではないか、と。
そうしたときに、「DXRubyも透視座標変換をサポートしました」みたいな、「ずいぶんStar Rubyを意識してますね」って感じにしたくはなくて、もっと大きな仕組みを作って、その応用の一つとして透視座標変換があります、っていうイメージがよい。
方針はSoundEffectと似たようなもんで、原理的には何でもできるが理解して使いこなすのは難しい、という感じになるかもしれない。
初心者にやさしくないが。
どこまで作りこむか、どういう仕組みにするかは難しいところだ。


ここで述べていることは、あくまでもおぼろげな概要/イメージだから、これがほんとに実装されるという保証はない。
っていうか無理だろ。