現在、継承を使用してレンダリングを行うための汎用インターフェイスを提供するゲーム エンジンがあります。
class renderable
{
public:
void render();
};
各クラスはgl_*
関数自体を呼び出します。これにより、コードの最適化が難しくなり、レンダリングの品質の設定などの実装が難しくなります。
class sphere : public renderable
{
public:
void render()
{
glDrawElements(...);
}
};
Renderer
オブジェクトをレンダリングするクラスを作成するシステムを実装することを考えていました。
class sphere
{
void render( renderer* r )
{
r->renderme( *this );
}
};
class renderer
{
renderme( sphere& sphere )
{
// magically get render resources here
// magically render a sphere here
}
};
私の主な問題は、この方法を使用するときに VBO をどこに保存し、どこに作成する必要があるかということです。このアプローチを使用するか、現在のアプローチに固執する必要がありますか?