私が書いたOpenGLアプリは、適切な形式の大きなデータファイルのビューアとして機能します。
これは非常に単純で、各データセットを一度に1つずつループし、glCallListを使用して各データセットを描画します。
for (all objects in our in our data set)
{
if (first time drawing this object)
{
glNewList(...);
for (all pixels in object_memory)
{
drawpixel();
}
glEndList();
glCallList(...);
delete object_memory
}
else
{
glCallList(...);
}
}
個々のglCallListの透明度を変更できる機能を追加しようとしています。問題は、データファイルが非常に大きいため、glCallListを生成してから、読み取った実際のデータを削除する必要があることです。これにより、メモリ使用量が4GBから約400MBに減少します。glCallListsの使用は、アプリケーションの速度にとっても非常に重要です。glCallListsがないと、クロールが遅くなります。
実際にリストを呼び出す前に、現在のマトリックスのグローバル透明度を変更する方法はありますか?
アルファ値を更新する必要があるたびにリストを更新することはオプションではありません。
あるいは、CallListsと同じパフォーマンス上の利点があるが、簡単に更新できる別の方法はありますか?
以前にVBO(Vertex Buffer Objects)について読んだことがありますが、それらは似ているように聞こえますが、データがアプリケーションドメインに正しく適合しているかどうかはわかりません。
どんな考えや意見も本当に適用されます。
ありがとう、
〜ブライアン