問題タブ [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.

0 投票する
4 に答える
4053 参照

visual-c++ - OpenGL 描画を OpenGL で保存するにはどうすればよいですか?

OpenGL コマンドで画面を描画します。そして、この画面を .bmp または .png 形式で保存する必要があります。しかし、私はそれを行うことはできません。glReadpixels を使用していますが、続行できません。この図面を OpenGL を使用して c++ で保存するにはどうすればよいですか?

0 投票する
0 に答える
222 参照

opengl - FBO からの OpenGL テクスチャリング (mimap の有無にかかわらず)

FBO を使用する際に明らかな何かが欠けているに違いありません:

アプリケーションの開始時に TMyForm::Init() を 1 回呼び出します。

Draw() 関数では、バッファーをカード (レンダリングされたシーンは問題ありません) とプレビュー ウィンドウ (デフォルトのウィンドウ コンテキストまたは fbo コンテキストに戻すかどうかに応じて、すべて黒またはすべて白) に送信します。

だから私の問題は、私が望むことをしない「パート2」です.fboコンテンツを現在のウィンドウにテクスチャリングします。「glTexCoord2d」を変更しようとしましたが、成功しませんでした。

0 投票する
1 に答える
2667 参照

c++ - Qt / C++ - 生のバイナリ データを変換して画像として表示する (QImage など)

アニメーション表示をレンダリングし、glReadPixels() を使用してフレーム バッファーの内容をキャプチャする C++ Open GL アプリケーションがあり、これは 1D char 配列として格納されます。

次のように、バッファの内容を取得して char 配列に保存できます。

次に、ソケットを使用してこれらの生データをネットワーク経由で送信しますが、これは私にとっては問題ではありません。Qt デスクトップ クライアント (ソケットを使用して OpenGL アプリケーションと通信する) があります。

このクライアント プログラムは、Open GL アプリケーションから送信された生のバイナリ データを正常に受信できます。

クライアント アプリケーションでこれらのバイナリ データからイメージをレンダリングするにはどうすればよいですか? Qt には、バイナリ データ (glReadPixels から生成される) から画像を描画するための組み込み関数/ライブラリがありますか?

ソケット経由で送信する前に、これらの生のバイナリ データを base64 型としてエンコード/デコードする必要がありますか? なぜですか、そうでないのですか?

0 投票する
0 に答える
439 参照

java - lwjgl の glReadPixels() でプログラムがクラッシュする

lwjgl を使用して Java で開発された一種のライト ビデオ ゲームでは、ユーザーがマウスで狙っているオブジェクトを取得するために glReadPixels() を使用します (すべてのオブジェクトは 1 つの色に関連付けられています)。Windows では問題なく動作しますが、Ubuntu で glReadPixels() を呼び出すと、例外が発生せずにプログラムがクラッシュします。一部のグラフィックドライバーと古いバージョンの mesa との非互換性による同様の問題に関するトピックをいくつか読みました。lwjgl に同様の問題があるかどうかは誰にもわかりませんか? これの何が問題なのですか?

コードの一部は次のとおりです。

0 投票する
1 に答える
1363 参照

c++ - シンプルな 2D 衝突検出 C++

私はこれに慣れていませんが、C ++で簡単な2Dゲームを作ろうとしています。ある種の迷路タイプのゲームを行うことにしました。そのためにやっていることは、迷路をテクスチャとして描画し、この迷路内でキャラクターが動き回るときに別のテクスチャを作成することです。

ただし、キャラクターが壁を通り抜けないように、衝突検出に非常に苦労しています。glReadPixels を使用して背景の色を見つけることができると言われましたが、これを試みるたびに色が無視され、壁を通過し続けます。

誰でも私を助けてくれませんか。助けてくれるものはどこにも見つからないので、どうすればできるか教えてください。前もって感謝します。

0 投票する
1 に答える
1314 参照

objective-c - iOS 上の OpenGL ES - glReadPixels() は、側面に黒いバーがある画像を返します。

フラグメント シェーダーを使用して単純なテクスチャを 4 つの頂点にレンダリングし、glReadPixels を使用して画像の解像度を読み取るのが好きです。(readPixel) サイズを (source)picture サイズのように設定しましたが、完全な画像は返されませんでした。右側には常に黒いバーがあります。そして、画像は圧縮されているようです。

画像の返された部分は正しいです。これは、私のソーベル シェーダの解像度を示しています。そのため、ReadPixel 部分または SetImage 部分にエラーがあるとは思いませんでした。しかし、私は知りません...

画像ソースを設定する私の方法は次のとおりです。

テクスチャをレンダリングする部分は次のとおりです。

そして、ここに解決策を読み返す部分があります:

どこでエラーを起こしているのかわかりません。このフォーラムと khronos グループ フォーラムを検索しましたが、解決策が見つかりませんでした (また、同じエラーの説明を持つケースも見つかりませんでした)。

別の重要な、または紛らわしい情報かもしれません-コードをc ++クラスに入れようとしました。しかし、EAGLContext を使用して Objective C クラスの外に出ると、正しい画像サイズが返されましたが、解像度が間違っています。解像度の画像には雪だけが含まれていますが、側面に黒いバーはありません。

誰かがこのエラーの解決策を知っていましたか?

よろしく、クリキット

0 投票する
0 に答える
429 参照

iphone - マルチサンプリングがオンの場合、glReadPixels が機能しない

glReadPixel は、マルチサンプリングが有効になっていない場合にうまく機能します。ただし、マルチサンプリングが有効になっていると、0x502 opengl エラーが発生し、画面がキャプチャされません。少し調べたところ、マルチサンプル バッファの解決に関連しているようです - 「glResolveMultisampleFramebufferAPPLE」。しかし、以下のように「takeAsCGImage」メソッド内で動作させることができませんでした

誰かが助けることができますか?



ありがとう、シンプル

0 投票する
0 に答える
736 参照

ios - iOS: オフスクリーン処理のための深度バッファへのレンダリングと深度バッファからの読み取り

問題

私の主な目標は、デバイス上のタッチのモデル座標を取得して、何をタッチしたかを確認することです。私は大規模なモデルを扱っており、多くのものを描画する必要があり、それらにも触れることができなければなりません。

これを実現するには、2 つの方法が考えられます。1 つは、レイ キャスティングを実行し、カメラのポインティング ベクトルをモデルと交差させる方法です。これをメモリのどこかに保存する必要があります。一方、それが私がやろうとしていることですが、古い方法でそれを行うことができます:

画面座標をモデル座標に変換します。私はここまで正しいですか?opengl アプリでのタッチ処理の他の方法を知っていますか? 関数がパラメーターとして winz を取ることがわかるように、これは画面座標でのフラグメントの高さであり、この情報は通常深度バッファーから取得されます。「通常の」openglで可能なように、opengl-es 2.0が内部的に使用される深度バッファへのアクセスを提供しないことはすでに認識しています。では、どうすればこの情報を入手できますか?

Appleは 2 つの可能性を提供します。深度がアタッチされたオフスクリーン フレーム バッファーを作成するか、深度情報をテクスチャにレンダリングします。悲しいことに、このマニュアルには、情報を iOS に読み戻す方法が示されていません。glReadPixels を使用して読み返す必要があると思います。見つけたものはすべて実装しましたが、どのように設定しても、オフスクリーン フレーム バッファまたはテクスチャからの高さに対して正しい結果が得られません。z値でGL_FLOATを取得することを期待しています。

z:28550323

r:72 g:235 b:191 [3]:1 <-- 常にこれ

コード

gluUnProject

glu ライブラリは iOS では利用できないので、コードを調べて、このソースに基づいて次のメソッドを実装しました: link . GLKVector2 画面入力変数は画面上の X、Y 座標であり、UITabGestureRecognizer によって読み取られます

}

描画中に生成される深度バッファまたは深度テクスチャからデータを読み取ろうとします。このコードが非常に非効率的であることはわかっていますが、最初に実行してからクリーンアップする必要があります。

追加のフレーム バッファ (ここでコメント アウト) のみ、タイルのみに描画しようとしましたが、成功しませんでした。

描く

}

z の値は、異なるタイプのものである可能性があります。float データ型に戻す必要があるのは単なる float ですか?

ご協力ありがとうございました!パテ

1.編集

レンダリングしたテクスチャからも RGBA を取得します。これを実現するために、描画中に個別のフレーム バッファーをアクティブにしますが、深度拡張はアクティブにせず、それにテクスチャを接続します。上記のコードを編集しました。今、私は次の値を取得しています:

ご覧のとおり、rgba 値が読み取られます。良いニュースは、モデルがもういない空に触れているとき、値は常に同じであり、モデルに触れている間は変化することです. だから、テクスチャは正しいはずだと思います。しかし、どうすればこの 4 バイトから実際の値を再構築し、それを gluUnProject に渡すことができるでしょうか? フロートにキャストすることはできません。

0 投票する
2 に答える
5770 参照

opengl - PBO を使用した非同期 glReadPixels

別の方法でピクセルを読み取るために、2 つの PBO を使用したいと考えています。PBOを使用するとglReadPixelsがすぐに戻り、多くの時間が重複する可能性があるため、PBOの方がはるかに高速になると思いました。

意外とメリットは少ないようです。次のようなコードを検討してください。

結果は

PBO の方法は少し高速ですが、満足のいく即時返品ではありません。</p>

私の質問は:

  • glReadPixels のパフォーマンスに影響を与える要因は何ですか? 場合によっては、10ms に達することもありますが、ここでは 1.3ms です。
  • 即時リターンのコストが 1.2 ミリ秒もかかるのはなぜですか? 大きすぎますか、それとも普通ですか?

================================================== =========================

デモとの比較によると、2 つの要因が見つかりました。

  • GL_BGRA は GL_RGBA よりも優れており、1.3ms=>1.0ms(PBO なし)、1.2ms=>0.9ms(pbo あり)
  • glutInitDisplayMode(GLUT_RGB|GLUT_ALPHA) ではなく、GLUT_RGBA, 0.9ms=>0.01ms。それが私が望むパフォーマンスです。私のシステムでは、GLUT_RGBA=GLUT_RGB=0 です。GLUT_ALPHA=8

次に、別の 2 つの質問:

  • GL_BGRA が GL_RGBA より優れているのはなぜですか? 特定のプラットフォームだけに当てはまるのか、それともすべてのプラットフォームに当てはまるのか?
  • GLUT_ALPHA が PBO のパフォーマンスに大きく影響するほど重要なのはなぜですか?
0 投票する
2 に答える
1114 参照

iphone - glReadPixels はいつ使用できますか?

関数の使い方を知りたい /GLReadPixelsピクセルをどのように読み取っていますか? glreadFunctionで提供された境界内にあるメインスクリーン上のGLKViewピクセルまたはピクセルまたは何かを読み取っていますか。UIViewまたは、使用している場合にのみ使用できますGLKViewか??

私の疑問を明確にしてください。