C++ における描画マネージャーの考え方について
Posted: 2015年9月30日(水) 22:36
描画マネージャーに登録したオブジェクトの描画プライオリティを変更したい場合、
そもそもそういう処理自体しなくていい、こうしたらいい・・・など
その処理をどうすればいいか分からずご質問させて頂きました。
本題の前に、使用環境等を記載致します。
・使用OS:Windows 7 Home Premium(64bit)
・コンパイラ:Visual Studio 2015
・使用言語:C++
簡略化した擬似コードを記載致します。
: class Base{ ... }; // 基本クラス
そして、class Base を継承した class MyChar、class Enemy、と作成し、それぞれ描画マネージャーへ登録したとします。
: DrawManager mng;
: mng.add(MyChar);
: mng.add(Enemy);
登録後は、描画マネージャのメンバメソッドにある
drawメソッドの呼び出しで画面上に描画されるものとします。
: for(mng に登録されている数分)
: mng.draw(); // 描画メソッド
どんどん追加して描画するだけの単純な構造で描画するだけならこれで全然いいのですが、
描画のプライオリティを変更したい時はどのようにすればいいのかが分からなくなりました。
今後、敵など描画する物が増えてくると、この構造では後から追加したものが一番手前に描画されるような仕組みとなっているため
例えば、最初に登録した MyChar を常に手前に表示しておきたい、
間に追加した Enemy を、ある Enemy よりも前に描画したいなど、どのような処理をしていけばいいのか困っております。
そもそもこのような問題が起こっていることが問題なのか、
フラグを設けて入れ替えるのか、追加するタイミングを考えないといけないのかなど色々な考えが出ている状態です。
何かお勧めの管理方法、実装方法などがありましたら教えて頂けないでしょうか。
よろしくお願いいたします。
そもそもそういう処理自体しなくていい、こうしたらいい・・・など
その処理をどうすればいいか分からずご質問させて頂きました。
本題の前に、使用環境等を記載致します。
・使用OS:Windows 7 Home Premium(64bit)
・コンパイラ:Visual Studio 2015
・使用言語:C++
簡略化した擬似コードを記載致します。
: class Base{ ... }; // 基本クラス
そして、class Base を継承した class MyChar、class Enemy、と作成し、それぞれ描画マネージャーへ登録したとします。
: DrawManager mng;
: mng.add(MyChar);
: mng.add(Enemy);
登録後は、描画マネージャのメンバメソッドにある
drawメソッドの呼び出しで画面上に描画されるものとします。
: for(mng に登録されている数分)
: mng.draw(); // 描画メソッド
どんどん追加して描画するだけの単純な構造で描画するだけならこれで全然いいのですが、
描画のプライオリティを変更したい時はどのようにすればいいのかが分からなくなりました。
今後、敵など描画する物が増えてくると、この構造では後から追加したものが一番手前に描画されるような仕組みとなっているため
例えば、最初に登録した MyChar を常に手前に表示しておきたい、
間に追加した Enemy を、ある Enemy よりも前に描画したいなど、どのような処理をしていけばいいのか困っております。
そもそもこのような問題が起こっていることが問題なのか、
フラグを設けて入れ替えるのか、追加するタイミングを考えないといけないのかなど色々な考えが出ている状態です。
何かお勧めの管理方法、実装方法などがありましたら教えて頂けないでしょうか。
よろしくお願いいたします。