問題タブ [pbo]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
macos - GL_PIXEL_UNPACK_BUFFER を指定した glTexSubImage2D は GL_INVALID_OPERATION を与える
現在、PBO を使用してビデオ データをテクスチャに取得しようとしています。私がやろうとしていることが可能かどうか、または可能であればそれを行う良い方法かどうかはわかりません... GL_RED 形式の 3 つのテクスチャがあります (各チャネルに 1 つ、現在アルファを使用していません)。 . これら 3 つすべてが、外部ライブラリへの 1 回の呼び出しで入力されます。
バッファなどをバインドします:
これは 3 つのテクスチャに対して行われ、バッファは外部ライブラリによって埋められます。次に、次のように、それらをテクスチャにプッシュしようとします。
エラーが生成される可能性のある理由のリストに目を通すと、これが私が知っていることです:
- テクスチャ配列が定義されました
- タイプは正しい
- データ パラメータ (オフセット) は 0 で良い
- glBegin/glEnd の間では実行されない
これについてはよくわかりません:
- ゼロ以外のバッファ オブジェクト名が GL_PIXEL_UNPACK_BUFFER ターゲットにバインドされ、必要なメモリ読み取りがデータ ストアのサイズを超えるようにデータがバッファ オブジェクトからアンパックされる場合、エラーが生成されます。
これは問題になる可能性があるようですが、これを処理する方法が他にわかりません。
- ゼロ以外のバッファ オブジェクト名が GL_PIXEL_UNPACK_BUFFER ターゲットにバインドされ、バッファ オブジェクトのデータ ストアが現在マップされている場合、エラーが生成されます。
この glUnmapBuffer は最後にマップされたバッファーのマップを解除しているため、正しいバッファーがまだマップされていると言うのは正しいですか?
GLのバージョンは3.2
これについて何か助けていただければ幸いです、ありがとう!
java - LWJGL ピクセルの読み取りに PBO を使用すると失敗する
フレームバッファから非同期的に読み込もうとしていますが、glReadPixels() は INVALID_OPERATION エラーを生成します。
このエラーの原因を読みましたが、コードに問題は見つかりませんでした:
c++ - OpenGL PBO テクスチャのアップロードに関する奇妙な点
この一般的な PBO の例に基づいてテストを行っています ( http://www.songho.ca/opengl/gl_pbo.htmlの pboUnpack.zip を参照してください)。テストは、例に従って PBO モード 1 で実行されます。
元のサンプルを実行したところ、私の NVIDIA 560GTX PCIe x16 (ドライバー v334.89 Win7 PRO x64 Core i5 Ivy Bridge 3.6GHz) でglMapBufferARB()
、前のサンプルがブロックglBufferDataARB()
を防ぐ (つまり、PBO を破棄する) ことを意図していた場合でも、15 ミリ秒ブロックすることがわかりました。
次に、画像サイズを元の 1024*1024 から 400*400 に変更しました。これにより、ブロック時間が確実に短縮されると考えました。驚いたことに、それは 15ms のままでした! CPU 使用率は高いままでした。
さらに実験して、画像サイズを 4000*4000 に増やしたところ、やはり驚きました。glBufferDataARB が 15ms から 0.1ms に減少し、同時に CPU 使用率が大幅に減少しました。
私はここで何が起こっているのかを説明するのに迷っており、そのような問題に詳しい人が光を当ててくれることを願っています.
関心のあるコード:
opengl - glReadPixels は機能しますが、PBO を使用すると INVALID_OPERATION が返されます
glreadpixels で INVALID_OPERATION を与える作業コードがあるため、混乱しています。私の推測では、パフォーマンスの問題を引き起こしている/引き起こす可能性があります。
FBO へのオフスクリーン レンダリングを行ってから、PBO からシステム メモリを読み込んでいます。
glReadPixels は INVALID_OPERATION を返しますが、最初のフレームを除くすべてのフレームを返します。どういうわけか、最初はエラーが発生しませんが、それ以降は文句を言います。そのエラーにもかかわらず、コードは正常に機能することを強調する必要があります。
私のコードは次のようになります。
初期化 (起動時にのみ呼び出されます):
オフスクリーン レンダリング (フレームごとに 1 回呼び出される):
opengl - OpenGL 3.X でピクセル バッファをバック バッファにコピー/レンダリングする方法
古い glDrawPixels のようなものを実行しようとしています: テキストで作成されたピクセル バッファーがあり、それをバック バッファー (すべてのシーンが既にレンダリングされている場所) に適用したいと考えています。
ほとんどのチュートリアル [1] は、ピクセル バッファをテクスチャにコピーしてから、このテクスチャをクワッドに適用するように見えますが、このソリューションは多くの不要な操作を実行しているようです: データのコピー、テクスチャのフィルタリングの作成、クワッドの描画 (つまり、新しい VBO) など...
他の回答[2]は「ブリッティング」について語っていますが、私はそれを機能させることができません。
また、OpenGL に関するほとんどの情報では、OpenGL 3.X では非推奨 (および使用不可) になっている glDrawPixels を引き続き使用しています。
c++ - PBOを使用したOpenGLテクスチャのアップロード?
OpenGL2.1 を使用して OpenGL アプリケーションを開発しており、スレッド経由でテクスチャをアップロードしたいと考えています。
私がこれまでに行ったこと:
- 2 番目のコンテキストを作成し、2 つの間で共有する
- テクスチャ データをスレッドにアップロードする
テクスチャのアップロード時に小さな「ラグ」が発生することを除けば、すべて正常に動作しています。これは、ドライバーが 2 つのコンテキストを同期する必要があるためです。問題は、テクスチャをストリーミングしたいということです。後でテクスチャを更新したくありません。アプリケーション全体を失速させることなく、「ほぼスムーズな」読み込みアニメーションを表示しながら、バックグラウンドでテクスチャを読み込みたいだけです。
それが私が検索したポイントであり、ピクセルデータの DMA データ転送に PBO を使用できることがわかりました。テクスチャのアップロードに PBO を使用することはできますか? もしそうなら、どのように?
android - FBO から PBO にピクセルを読み取るときのエラー 0x0502
私は FBO と PBO を一緒に使用し、FBO から PBO へ、フレームごとにピクセルを読み取ろうとしていました。コードは以下のとおりです。
PCでは問題なく動作します。しかし、Androidフォンで実行できず、glReadPixelsの直後にエラー0x0502(GL_INVALID_OPERATION)が発生しました。
私のコードは、このリンクの一番下の回答と同じだと思います: ピクセル バッファー オブジェクト (PBO) を使用してフレーム バッファー オブジェクト (FBO) からピクセル値を読み取る
誰も手がかりを得ましたか?どこで間違ったのですか?
opengl - PBO を使用した OpenGL タイル テクスチャのアップロード
私は次のようにPBOを使用しています:
そして、textureId を使用して画面に表示しています。ところで、イメージのソースである g_fb_addr はタイル化されたメモリ レイアウトを持っています。したがって、表示される画像は横軸に縞模様になります。
私の質問は、タイル画像を PBO にアップロードする方法はありますか?
c++ - 統合 GPU で PBO が正しく動作しない
ベンチマークの目的で、この有名なPBO リードバック コードを取り上げます。
問題:
- PC で PBO を使用しても効果がありません。最新のドライバー更新と正しいピクセル形式の BGRA を使用しても。
更新 1: 3 つの PBO で同じ例を試しました。しかし、それでも違いはありません。
注:Intel(R) Core(TM) i5-3470S CPU @ 2.90GHz、2901 Mhz、4 コア、ビデオ カード: Intel(R) HD Graphics 2500
更新 2: PBO は、外部 GPU および Intel i-7 シリーズでも正しく動作しています。
PC 構成: Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz、3400 Mhz、4 コア、8 論理プロセッサ、ビデオ カード: Geforce 210 。統合 GPU と外部 GPU。これは、なぜ自分のコードが機能しないのか疑問に思っている多くの人にとって役立つヒントになると思います!