DXRubySpriteのはなし

DXRubyのソースなんかマジメに読んでる人はいないとは思うが。
描画まわりの話を少し。
Window.draw系のメソッドは、DXRubySprite構造体を編集してメモリに保存しているだけである。
これは、描画実行部分とそれ以外の処理をほぼ完璧に分離するためにそうしている。


描画にはD3DXSpriteを使っていて、これも、Drawを呼ぶと内部のバッチリストにパラメータを保存して、FlushやEndでD3Dデバイスにまとめて渡す仕組みになっている。
そーいうことなら、Window.draw系メソッドでD3DXのDrawを呼んでしまっても、実際の描画処理は最後にまとめてということにはなる。
そうしていないのは、Drawするためには結構たくさんの計算をしないといけなかったからだ。
いま考えれば、加算合成実現のためにFlushをはさんだりするから、わけといてよかった、って感じ。
んで、その計算やらなんやらをまとめると何ができるかというと、処理が間に合わなかったときに、描画関連の処理を全部まとめてすっとばすことができる、ようになるわけだ。
Drawのための計算も、描画自体を飛ばすなら、そのものが不要だ。


DXRubyの開発を再開したときに、未実装だったが、DXRubySprite構造体にidという未使用項目があった。
たしか、Window.draw系を実行したあとで、取り消しをする機能があったらいいな、と思って付け足したよーな気がする。
正直言っていらんので消した。
4年前の俺が何を考えていたのかもう忘れてしまってわからんけど、初心者でも簡単に扱えるように、DirectXをできる限り隠蔽しつつ、勝手に速度的に安定した動作をして、それでいて性能には妥協しないアーキテクチャを考えようとしていた、らしい。たぶん。
4年前の俺SUGEEEE。
無論いまは見る影も無い。
DXRubyを公開して見せびらかしている姿を客観的に見ると、過去の栄光にしがみつく老人のような雰囲気が漂っているような気がしないでもない(´・ω・`)
まあそれなりに年だが(´・ω・`)