最終的に、頂点に色を追加できるようになりました。しかし、今は FPS レートを改善したいと考えています。こちらが現状です。多数の頂点 (~200000) があり、それぞれが ~150 クラスのいずれかに属している可能性があります。各クラスは色によって異なります。現在、次のように頂点を描いています。
glEnableClientState(GL_VERTEX_ARRAY)
glBindBufferARB(GL_ARRAY_BUFFER_ARB, self.bufferVertices)
glVertexPointer(3, GL_FLOAT, 0, None)
glEnableClientState(GL_NORMAL_ARRAY);
glBindBufferARB(GL_ARRAY_BUFFER_ARB, self.bufferNormals)
glNormalPointer(GL_FLOAT, 0, None)
glEnableClientState(GL_COLOR_ARRAY)
glBindBufferARB(GL_ARRAY_BUFFER_ARB, self.bufferColors)
glColorPointer(3, GL_FLOAT, 0, None)
glDrawArrays( GL_POINTS, 0, len(self.vertices) / 3 )
すべて正常に動作し、FPS は ~60 です。すべてのバッファは初期化時にのみ生成されます。しかし今では、各クラスを表す色が約 1 ミリ秒ごとに急速に変化します。これにより、色も変更されるため、描画ごとにカラー バッファーを再作成する必要があり、頂点が 200000 の場合、FPS が 0 に近くなるような気がします。実装しようとしている修正は、固定色を維持することです。ただし、実際の色の代わりに、それが表すクラスへのポインターを保持します。そうすれば、クラスの 200 色だけが変更されます。問題は、これを OpenGL でどのように実装できるかわかりません。これは実行可能ですか?これを行う方法の指針はありますか?