問題タブ [glreadpixels]
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.
qt - OpenGL + QT: テクスチャにレンダリングして表示する
いくつかの問題の後、Qt 4.8 アプリケーションのフレーム バッファ オブジェクト内のテクスチャに正しくレンダリングすることができました。QGLWidget で OpenGL コンテキストを開き、FBO にレンダリングして、これをテクスチャとして使用できます。
ここで、QPixmap でレンダリングされたテクスチャを表示し、GUI の他のウィジェットで表示する必要があります。しかし..何も表示されません。
これらはいくつかのコードです:
ウィジェットが開いているのがわかりますが、中には何もありません。テスト行のコメントを外すと..「dudee」文字列が表示されるので、qlabelがあることがわかりますが.. QPixmapからの画像はありません。
元のデータが「unsigned char」であることは知っていますが、「char」を使用していて、いくつかの異なる色パラメータ (「GL_RGBA」、「GL_RGB」など) を試しましたが、これがポイントではないと思います。 . ポイントは、何も見えないということです..
何かアドバイス?さらにコードを投稿する必要がある場合は、投稿します。
編集:
すべてのコードを投稿したわけではありませんが、明確にしたいのは、テクスチャがキューブ内のテクスチャとして正しくレンダリングされていることです。GPUからCPUに戻すことができません
編集2:
ペッペの回答のおかげで、問題が見つかりました。コンストラクターとして生のピクセルデータを受け入れるQtオブジェクトが必要でした。完全なスニペットは次のとおりです。
opengl-es - iOS で FBO がクラッシュする glReadPixels
FBO で glReadPixels を呼び出すと、断続的にクラッシュします。現在、ライブ アプリで 1 日あたり 1000 件以上のクラッシュが発生しています。
ピクセルを読み取って FBO を生成するためのコードを以下に含めます。必要に応じて、使用される他のコードを含めることができます。
クラッシュ ログは次のようになります (多少の違いがあります)。
android - PBuffer からの読み取り時に glCopyTexImage2D が GL_RGBA で機能しない
OpenGL ES2 を搭載した Android で NDK を使用しています。
- 解像度 1024x576 の eglCreatePbufferSurface を使用して PBuffer サーフェスを作成します。GL_RGBA 形式を使用します。色成分ごとに 8 ビット。
- ビットマップからテクスチャをロードし、サーフェスにブリットします。glFlush() を呼び出します。
- 別のテクスチャを作成し、glCopyTexImage2D を使用してフレーム バッファをこのテクスチャに読み込むよりも。テクスチャの内部フォーマットは GL_RGBA です。
- 新しいテクスチャを同じフレーム バッファに再度ブリットします。glFlush() を呼び出します。
- 最後に glReadPixels を呼び出してフレーム バッファを読み取り、ビットマップとして保存します。
結果はピクセル化されます。
すべてのテクスチャには次のパラメータがあります。
また、PBuffer の代わりにウィンドウ サーフェスを使用し、結果を画面に描画すると、正しく、ピクセル化されません。
私が試したもう 1 つのことは、元のテクスチャを PBuffer にレンダリングし、バッファからピクセルをすぐに読み取ることです。glCopyTexImage2D を使用した余分なパスなし。結果も正解。
glCopyTexImage2D 内部フォーマットを GL_RGBA から GL_RGB に変更すると、すべて正常に動作します。私の PBuffer 色空間形式は RGBA です。
更新:私のコードはエミュレータでは正常に動作するようですが、Nexus 7 デバイスでは動作しません。
glCopyTexImage2D を GL_RGBA 形式で使用すると、ピクセル化されるのはなぜですか?
opengl - glReadPixels または glCopyTexSubImage2D が遅すぎますか?
N パスを描画する必要があり、パスごとに fbo から 1 ピクセルを読み取りますが、パスごとに 1 ピクセルを読み取るには遅すぎることがわかりました。次に、別のテクスチャ (rectange:N*1) を使用してピクセルをキャッシュします。つまり、パスごとに 1 つのピクセルを結果のテクスチャにコピーします。N パス後、結果のテクスチャを 1 回読み込みます。ただし、TOO SLOW もあります。たとえば、結果のテクスチャ (200*1) を読み取るには、13 ミリ秒かかりました。
この問題を解決する別の方法があるかどうか疑問に思っています。
また、非同期で動作するピクセル バッファ オブジェクトに関するいくつかの投稿も解決しました。ただし、最後のパスが完了した後、すぐに結果テクスチャの結果が必要です。CPU と GPU の両方で動作するものは他にありません。
ios - マルチサンプリングを使用した iOS の glReadPixels
マルチサンプリングでフレームバッファからピクセルを取得しようとしています。ゼロのみを返します。こことここで提案されているように glResolveMultisampleFramebufferAPPLE を呼び出しますが、私の場合は何が問題なのかわかりません。
まず最初に、カラー アタッチメントを使用してマルチサンプリングされていないフレーム バッファを作成します。
次に、色と深度が添付されたマルチサンプル フレームバッファを作成します。
次に、フレームバッファをクリアします:
描画を行います (これは Cocos3D 描画コードです):
次にバッファを解決します。
次に、すべてゼロを取得します。
フレームバッファの作成に成功するため、2 つの gl チェックをスキップしました。私のコードのどこにエラーがありますか?
opengl - PBO に (そしてそこからファイルに) レンダリングするように既存の opengl アプリケーションを変更しますか?
既存の OpenGL アプリケーションを変更して PBO にレンダリングし、PBO を読み取って、元々画面にレンダリングされる予定だったもののエンコードされたビデオを生成したいと考えています。パフォーマンスが重要であるため、以前のようにバックバッファーから glReadPixels を実行してパイプラインを停止させることはできません。レンダリングされたすべてのものをフレームバッファにリダイレクトし、代わりに PBO に移動させる単純または直接的な方法があるかどうか疑問に思っています。つまり、画面に表示されなくても構いません。実際のところ、画面に何も表示されない方がいいと思います。
android - AndroidでOpenGL ES 2.0で大きなテクスチャを(効率的に)保存する方法
これで、glReadPixels() を使用してフレーム バッファー (FBO) のデータを読み取ることで、テクスチャを保存できます。しかし、私は2つの問題に直面しました。
(1) 保存された画質を維持するために、ディメンションは GL_MAX_TEXTURE_SIZE (ほとんどのデバイスは 4096) よりも大きくなります。大きなテクスチャ (例: 4160x3120) を作成すると、glCheckFramebufferStatus() を呼び出すときに GL_FRAMEBUFFER_UNSUPPORTED エラーが発生しました...
(2) 小さなテクスチャ (例: 3648x2736) を作成した場合、glReadPixels() を除くすべての動作が非常に遅くなります....
私の質問に戻りますが、最大テクスチャ サイズの制限を克服して効率的に保存することは可能ですか? ありがとう。
android - 一部の Android デバイスで PBuffers を使用すると glReadPixels が失敗する
一部のopengl ESドライバーで問題に直面しています。Pbufferに対してglReadPixelsを呼び出すと、一部のデバイスはメッセージなしでアプリを強制終了します。他の人は私に次のトレースを提供し、アプリを強制終了する前に約 10 秒間フリーズします。
これまでのところ、問題が再現可能な影響を受けるデバイスは次のとおりです。
また、次のデバイスでコードをテストしましたが、期待どおりに正しく動作し、まったく問題はありません。
問題を再現する簡単なテスト機能をまとめました。多分誰かが問題を見つけることができます。これは単なるテスト方法です。バグをテストできるようにまとめただけなので、レビューは必要ありません。何か見逃した場合はお知らせください。