ライブラリ設計

テクスチャサイズは2の乗数倍を徹底すべし

・いや、基本的なんでわかってるんですが、動いちゃったりすると1280x512とかで、見落としたまま素材上げられちゃったりするので。 ・DirectXベースだと一部のグラフィックボードでまともに動いても1280→2048に伸長されるのでUVがズレます。リソース管理を徹…

placement newの配列

・placement newの配列は先頭数byteをデストラクタが必要な個数として強制的に使用されるため、デストラクタが必要なクラスの配列確保には使用すべきではない。 ・代換案として必要な総サイズ分をAllocateした後にコンストラクタだけ叩くnewを作って配列数分…

テンプレートのインナークラスをメンバ関数の返り値として利用する時

template class A { class B { T t; }; B b; B Return0() { return b; } B Return1(); }; template typename A::B Return1(){ return b; }; ・クラス宣言内部に書くか、typenameで明示的にしないとVC++だと通らないっぽい。

仮想メンバ関数とキャッシュミス

・たとえばそのクラスの継承先がなんであるかを判定したい時に enum{ CLASS_A = 0, CLASS_B, }; class A { virtual int CheckClass() { return CLASS_A; } }; class B : public A { int CheckClass() { return CLASS_B; } }; というように気軽に仮想メンバ関…

最終的な描画出力

・リソースを全て描き終ったあとに、フレームバッファにフリップする直前にテクスチャー化をライブラリレベルで常に行っておくと、解像度の変更や画面出力の調整など色々便利。 ・処理オチとの勝負になったら切るしかないけどね。

アウトプットのマネージメント

・出力したモノも管理できるようにタグ付けしておくべき。 ・サウンドなどは再生チャンネルに投げっぱなしでなく、IDタグやハンドルと関連付けて管理すべき。 ・描画もPIX使わないでも追えるようにしたい。