プライオリティ描画管理
以前まではスプライト描画用の構造体を作って、その構造体を保存しておき
ソートをかけて描画するという手法をとっていたわけだが、結構メモリを消費するのと
数を増やしづらいというのがあったので、新しい手法として関数単位のソートを書くようにしてみた。
class DrawList { public : typedef void (*DrawFunc)(void* arg1, void* arg2); DrawList(int n) : data_(n){} void Clear() { for (unsigned int i = 0; i < data_.size(); ++i) { data_[i].clear(); } } void Set(DrawFunc func, void* arg1, void* arg2, int prt) { Data data; data.func = func; data.arg1 = arg1; data.arg2 = arg2; data_[prt].push_back(data); } void Draw() { for (unsigned int i = 0; i < data_.size(); ++i) { std::list<Data>::iterator it = data_[i].begin(); for (; it != data_[i].end(); ++it) { (it->func)(it->arg1, it->arg2); } } } private : struct Data { DrawFunc func; void* arg1; void* arg2; }; std::vector<std::list<Data> > data_; };