0

背景: 私はCocoaでスクリーンセーバーを構築しています。ここでは、いくつかのCコードが振幅を表す値の2次元配列(0から1の間)を生成しています。次に、これを、配列内の値を表すセルの色でグリッドとして画面に表示します。

遅すぎるNSBezierPathでループを使用することから始めました。それから私はRectListに移動しました。これは高速でしたが、それでも遅すぎました。現在、nsbitmapimagerepまたはOpenGLへの移行を検討しています(これはより高速になると思います)。

質問: したがって、私の質問は、ココアでopenglを使用して、位置は固定されているが色が変化する(1秒あたり最大30回)正方形の2次元配列(通常は200x200)を描画する最良の方法は何ですか?

これまでの試み: glQUADをループするのではなく、glDrawArraysなどを使用したいと思いますか?または、頂点バッファオブジェクト(現在読んでいるもの)に移動しますか?

4

1 に答える 1

1

OpenGL を使用すると、2D 配列をテクスチャとして定義するだけです。次に、単純なクワッド ドローを使用して、そのテクスチャを画面に描画できます。

最高のパフォーマンスを得るには、2 つのテクスチャを維持することをお勧めします。1 つのテクスチャは表示中のテクスチャで、もう 1 つのテクスチャは更新中のテクスチャです。更新が完了したら、それらを交換します。PCIe バスを介してメイン メモリからグラフィックス メモリにテクスチャ データをコピーすると、速度が大幅に低下するため、これはおそらく役立つでしょう。メモリを可能な限り節約することで、この転送速度が向上することは明らかです。パレットを使用すると、データの一部をアップロードすることになるため、大きなメリットが得られます...

于 2012-04-16T12:02:46.750 に答える