> roast_ex > directx
Roast Ex/directxは、Microsoft DirectXを薄くラッピングしたライブラリです。
フレームワークほど手間が減る訳ではありませんが、DirectX APIを直で叩くよりは大幅に手間が削減出来ることでしょう。 またroast系列として、変数名関数名は全小文字(定数除く)の単語毎にアンダーバーとなっているため、コードの統一感が保たれるのも特徴です。
ソースコード: http://git.sourceforge.jp/view?p=roast/roast_ex_windows.git
何か異常があった際の通知は基本的に例外の送出(throw)により行われます。 インスタンスの生成はクラスを宣言すれば良いだけです。生DirectXのようにインターフェースではないため、開放(Release)を忘れないよう気を配る必要もなくなります。
余り使われない引数は省略出来るようにしてあります。DirectXの各バージョン間の差異も、なるべく吸収出来るものは吸収しています。
これらは一見些細なことに思えるかも知れませんが、実際に使ってみると、多大の効果があるものです。
例えば「とりあえず真っ黒い画面を出してみる」だけなら、以下のコードで済みます。
- #include "roast/graphics/directx/dx9.hpp"
- #include <stdio.h>
- void main( void )
- {
- try
- {
- using namespace ::roast::directx::dx9;
- using namespace ::roast::windows;
- graphics::first f;
- window w("roast_ex_directx_sample_WindowClass");
- w.start("Sample Window");
- graphics::device d(f);
- d.start(w, false);
- d.begin_scene();
- d.clear();
- d.end_scene();
- d.present();
- Sleep(1000);
- }
- catch( ::std::string &s )
- {
- printf("%s\n", s.c_str() );
- }
- }
たったそれだけのこと。されどこれだけのコード量の削減です。(実際生APIで書いて行こうとすると、ウインドウ生成も合わせれば軽く200~300行近くは行きます)