まず第一に、ディスプレイリストはOpenGL 3.0で非推奨になり、3.1で削除されたことを知っています。しかし、OpenGL2.1が使用されているこの大学のプロジェクトではまだそれらを使用する必要があります。
ディスプレイリストで読んだすべての記事やチュートリアルでは、木など、複数回描画されるある種のオブジェクトでそれらを使用しています。1つのオブジェクトに対して1つのリストを作成することに何か問題がありますか?
たとえば、建物のオブジェクト(.obj形式)があります。この特定の建物は一度だけ描かれます。基本的なパフォーマンス分析のために、ウィンドウのタイトルバーに1秒あたりの現在のフレーム数が表示されます。
このようにそれを行う:
glmDraw(objBuilding.model, GLM_SMOOTH | GLM_TEXTURE);
私は約260FPSを取得します。GLMライブラリについては、glmDraw
関数は基本的に一連のglVertex
呼び出しを行います。
しかし、このようにそれを行う:
glNewList(gameDisplayLists.building, GL_COMPILE);
glmDraw(objBuilding.model, GLM_SMOOTH | GLM_TEXTURE);
glEndList();
glCallList(gameDisplayLists.building);
私は約420FPSを取得します。もちろん、画面のリフレッシュレートはそれほど速くは更新されませんが、私が言ったように、それはパフォーマンスを測定するための単純で基本的な方法にすぎません。
それは私にははるかに良く見えます。
また、防衛塔など、何度も繰り返すオブジェクトがある場合に備えて、ディスプレイリストを使用しています。繰り返しますが、単一のオブジェクトに対してこれを行うのに何か問題がありますか、それともこれを続けることができますか?