2015年5月31日日曜日

glDrawPixels()とglReadPixels()コマンドが大変遅いのはなぜか?

覚書として。

http://opengl.jp/oglfaq/performance.htm

glDrawPixels()とglReadPixels()コマンドが大変遅いのはなぜか?
多くのよりハイエンドのUNIXワークステーションクラス機器でOpenGL2Dパス(その呼び出しのような)の性能が容認できる間、いくつかのインプリメンテーション(特に、ローエンド安い消費者レベルグラフィックスカード)は、決してよい2Dパス性能を持っていませんでした。 人は、それらのコストを倒すためにコーナーがこれらの機器またはデバイス・ドライバに刻みつけられたことを期待するだけで、マーケティングするそれらの時間を減少できます。 もし500ドルの下のためのグラフィックス機器を購入するならば、これが、書かれた(2000年初め)であった時に、チャンスがOpenGL2Dパス性能である 受け入れ不可能に遅い。
もしグラフィックスシステムが、きちんとした性能を持っているべきであるけれども、しないならば、性能を押し上げるために取ることができるいくつかの処置があります
第一に、すべてのglPixelTransfer()状態はそれらのデフォルト値に設定されるべきです。 また、glPixelStore()は、8に設定されるべきそのデフォルト値〈GL_PACK_ALIGNMENTおよびGL_UNPACK_ALIGNMENT(適切なものどれでも)を除いた〉に設定されるべきです。 データポインタは対応して2倍である必要があります 位置合わせされた-言葉 。
第二に、glDrawPixels()またはglReadPixels()にパラメータを試験してください。 それらはframebufferレイアウトと一致していますか? どのようにアプリケーションのためにframebufferが設定されるかについて考えてください。 例えば、もし8ビットの宛先アルファによって24ビットframebufferに与えていると知っているならば、タイプパラメータはGL_RGBAであり、フォーマットパラメータはGL_UNSIGNED_BYTEであるはずです。 もしタイプとフォーマットパラメータが、framebufferコンフィギュレーションと一致していないならば、それはたぶんあなたです それを処理している/ピクセルのため、行き当たられたパフォーマンスを被る パラメータ指定とframebufferフォーマットの間のデータを翻訳するために必要とした 。
最後に、非現実的な予想を持っていないことを確かめてください。 システムバスとメモリー帯域幅制限を知ってください。

0 件のコメント:

コメントを投稿