をそろそろやろうかなぁ。
もちのろんでC++オンリーで。
時期をみてやり始めようとは思ってたんですけど、最近DirectX側からWin32APIを呼び出すことも増えてきました。
もはや取り敢えずサンプルプログラムをまるまるコピペして意味のわからんままに実行するだけの4ヵ月前の自分ではない
今もう一度勉強し直したら今度は8割5分は理解できる位のレベルにはなっているはずw(ほんまかいな・・・)
まぁなんでいきなりやろうと思ったからって、非DXUTでIME呼び出そうとして「あぁこりゃだめだ」ってなったからなんですがね。
まぁDirectXと並行してやることになるのかなぁ~
そういえばDirectXの方は取り敢えず最低限のフレームワークは構築できましたね。
ウィンドウ制御、フレームレート制御、デバイス制御、はそこそこできました。
描写周りは取り敢えずリソース管理をちゃんとやってからにします。
あとあとめんどくさそうなことからやる。それが自分。
こだわりのメインファイル
► スポイラーを表示
CODE:
#include "D3DFramework.h"
int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow){
if(FAILED(D3DFramework->D3DFCreateWindow(hInstance) )) return -1;
while(SUCCEEDED(D3DFramework->Update() ));
return 0;
}
という6行構成wmainが短いと気持ちい。
ちなみにグローバルなインスタンスを使っているように見えますが
#define D3DFramework MyDX9::D3DFramework9::Instance()
となっています。そしてInstance()は
static Noncopyable_ptr D3DFramework9::Instance();
と宣言されています。
D3DFramework9はコンストラクタと代入演算子をprivateにしてありますので、これ以外の方法でフレームワークにはアクセスできないという構造です
Noncopyable_ptrはこうなってます
CODE:
template
class Noncopyable_ptr{
friend T;
T* m_RawPtr;
private:
Noncopyable_ptr(T* rawPtr):m_RawPtr(rawPtr){}
Noncopyable_ptr(const Noncopyable_ptr& other):m_RawPtr(other.m_RawPtr){}
Noncopyable_ptr& operator = (const Noncopyable_ptr& other);
public:
~Noncopyable_ptr(){
}
T& operator *(){
return *m_RawPtr;
}
T* operator ->(){
return m_RawPtr;
}
};
コピーできないから参照よりも縛りが強いポインタ
ロジック系では平行並列技法を研究中なり
具体的にはIntel Threading Building Blocksで勝負します
(将来的に衝突判定で使ってやろうと思考中)