1

これは、正直な答えを持っているものよりも議論の質問です。私はOpenGLでかなり単純なシーンを開発していますが、使用しているクラス構造に問題があります。「プリミティブ」基本クラスがあり、そこからCube、Tetrahedron、Sphereなどの派生クラスを構築しています。基本クラスは、頂点や法線など、オブジェクトに関するすべてのデータを保持します。ここから、FenceなどのModelクラスから派生したいくつかのクラスがあります。このクラスには、正しい構造を作成するために配置されたいくつかのキューブが含まれています。すべての頂点と法線をヒープに格納しているので、メモリを解放する方法が必要です。ただし、Primitiveのコンストラクターでメモリを解放しようとすると、エラーが発生します。

これは、GLUTを使用する場合、モデルがglutMainLoop()の外部で定義されているため、プログラムがモデルを使用する前にモデルがスコープ外になるためだと思います。OpenGLで頂点配列を使用してメモリを管理するためのより効率的な方法はありますか?または、この問題の回避策はありますか?

4

1 に答える 1

2

モデルにクライアント側のバッファーを使用する代わりに、サーバー側のバッファーを使用します。これらはを使用してバインドされglGenBuffer glBindBuffer and glBufferDataます。これらのAPIはバッファをサーバーメモリにアップロードし、アップロードされるとすぐにデータを解放できます。

OpenGLの新しいバージョンには、同様に役立つ可能性のある頂点配列オブジェクト(VAO)があります。

于 2012-11-15T16:25:52.010 に答える