OpenGL で大量のオブジェクトを描画するためのテクニック
OpenGL で多くのオブジェクトを描画するために使用できる手法や方法を考えています。
たとえば、レンガを表すクラスと、木を表す別のクラス、または街灯柱のように描きたいランダムなものがあるとします。次に、描画するレンガや街灯などをたくさん持っているとします...それぞれに対して draw メソッドを呼び出すと、非常に長いコードになります。
現時点では、レンガや木のような世界の「もの」を描画するために、過剰なコールバック関数を使用しています。
グローバルにアクセス可能なベース ポインターのベクトルの使用
私が持っていた 1 つのアイデアは、すべてのクラスが基本クラスから継承され、基本ポインターをベクターに入れ、そのベクターをグローバルにすることでした。そうすれば、次のようなことができます:
for(int i = 0; i < vector_of_objects.size(); i ++)
vector_of_objects[i]->draw();
各オブジェクトは、すべての OpenGL プリミティブを描画する draw 関数を持つことができます。
このようなクラスの例は、次のようなものです。(これは私が実験しているものです。)
class box {
public:
void draw() { // Do the drawing of a box }
// Other members etc
}
代替案?
家のようなもののために新しいクラスを作成すると、ユーザーは「draw」と呼ばれる描画関数を追加することを覚えておく必要があるため、これは良い考えではないようです...これは些細な点ですが、必ずしも大きな問題ではありません問題。
業界やゲームの開発でさまざまな手法が使用されていますか? この方法の利点は、for ループが draw 関数に入れられると、それを忘れることができるということです。
より良い代替案について何か提案はありますか?