2016-07-07 7 views
0

SDLGame Makerにはサーフェスの概念があり、その画像を即座に変更して表示することができます。私はOpenGL 1を使用していますが、OpenGLにこのSurfaceという概念があるかどうかを知りたいと思います。私が思いついたOpenGLでの吹き出しサーフェス

唯一の方法だった:

  • すべてのフレームは、ニーズに基づいて新しいテクスチャを作成/破壊します。
  • すべてのフレームは、必要に応じてテクスチャを更新します。

これらのアプローチはあまり効果的ではないようですが、代替手段はありません。おそらく、これが前述のエンジンでどのように実装されているのでしょうか。

+0

私の回答が役に立ったかどうか確認できますか? – Harish

+0

さて、私はもっと答えが得られないと思います。それ以外の選択肢がなければ、私はそれを知ってうれしいです。 – Agggg

答えて

0

はいこの2つは、OpenGL 1.0で行う方法です。 1.0仕様までは他の手段はないと思う。 リンク:https://www.opengl.org/registry/doc/glspec10.pdf

テクスチャは、シェーディングに高速にアクセスできるデバイスメモリ(GPU)に保存されます。そして、上記のアプローチは、ホスト(CPU)メモリとデバイスメモリの間でそれをコピーします。したがって、パフォーマンス・ヒットはホスト・デバイスのコピー速度です。

なぜあなたはOpenGL 1.0仕様に制限されていますか?あなたは上に行くことができ、その後、より多くのオプションを得ることを開始します。

  1. GLSLシェーダを使用して、1つのテクスチャからコンテンツを直接編集し、別のテクスチャに出力します。処理はGPU上で行われ、デバイスデバイスのコピーは取得したときと同じくらい速くなります。
  2. CUDAを使用してください。テクスチャをCUDA配列にマップし、カーネルを使用してコンテンツを変更します。または、NVIDIA以外のカードにOpenCLを使用してください。

これは、修正が平行して実行できる限り、より良いシナリオになります。

私はCPUコピー方法を試してみることをお勧めします。あなたのニーズに十分に速いかもしれません。ホストデバイスのコピーは最新のハードウェアで高速化しています。これを実行する予定のテクスチャがたくさんある場合を除き、このコピーでも60fps以上のリアルタイムを得ることができます。

関連する問題