問題タブ [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.
python - OpenGL glReadPixels からデータを取得する (Pyglet を使用)
アプリケーションで Python で Pyglet(および OpenGL) を使用しています。glReadPixels を使用して一連のピクセルの RGBA 値を取得しようとしています。OpenGL はデータをパックされた整数として返すことを理解しています。これは、データがハードウェアに格納されているためです。ただし、明らかな理由から、作業用に通常の形式にしたいと考えています。いくつかの読書に基づいて、私はこれを思いつきました: http://dpaste.com/99206/、しかし、それは IndexError で失敗します。どうすればこれを行うことができますか?
c++ - glReadPixels() は本当に遅く、マウスの位置から OpenGL 座標を取得するためのより良い解決策ですか?
これは、3D シーンでマウスの位置を取得するために使用するコードです。
しかし、悪いことに気付きました... フレームごとにその関数を 1 ~ 2 回呼び出すと、CPU 使用率が 100% になり、3 回以上呼び出すと CPU 使用率が 200% になります (4 コア、1 ~ 2 回の呼び出し = 25%、3 回以上の呼び出し) = 50%、50% を超えることはできないと思います..)
これを効率的に行う他の方法はありますか?フレームごとにその関数への呼び出しを 4 回使用しているので、シーンにレンダリングする必要がある領域を把握しています (画面の各コーナーから取得します)。
また、マウスでどこを指しているかを知るためにも使っているのでリアルタイムで必要なのですが、1回の呼び出しでもシングルコアで100%使えるのでCPUの使用を減らしたいです。
編集
glPushName() メソッドを試してみましたが、CPU よりも GPU の方が遅く、遅くなる可能性が高くなります。また、プログラムで glReadPixels() 呼び出しを 1 回も使用しない場合、CPU 使用率は 0 ~ 1% 程度です。奇妙なことは、CPU使用率が高くなることですが、100%の使用率で期待するようにプログラムが遅れることはありません...プログラムがオンになっているときに他のプログラムを使用すると問題が発生し、それらを使用するのが遅くなります.
opengl - glfwOpenWindowおよびglReadPixelsモード?
次のコマンドでglfwウィンドウを開いたとします。
それから、私はそれを読み返そうとします:
..1..および..2..として何を入れるべきかわかりません。..1 ..はGL_RGBAである必要があると思いますが、..2。のアイデアはありません。
ありがとう!
iphone - glReadPixels が特定のレンダー バッファー幅でクラッシュする
さまざまな幅と高さ (背景画像のサイズに基づく) を持つ CAEAGLLayer のコンテンツを読み取る必要があります。iPadエミュレーターではすべて問題ありませんが、デバイスではコンテンツの代わりにクラッシュしたり、奇妙な水平線が表示されます。幅が 537 から 544 ピクセルの場合、クラッシュは発生しません。
次のコードを使用しています
iphone - IphoneglReadPixels問題
OPENGL ESを使用して、iPhoneでPIE文字を描画しています。次に、ユーザーがクリックしたパイの色を確認する必要があります。パイをクリックすると、正しい値が返されることもあれば、正しくないこともあり、0,0,0が返されることもあります。
'(void)handleTap:(UITapGestureRecognizer *)レコグナイザー{
CGPoint lPoint = [レコグナイザーlocationOfTouch:0 inView:mGLView];
バイトaPixel[4]; glPixelStorei(GL_PACK_ALIGNMENT、1); glReadPixels(lPoint.x、lPoint.y、1、1、GL_RGBA、GL_UNSIGNED_BYTE、&aPixel [0]);
NSLog(@ "%i"、glGetError()); NSLog(@ "POINT X =%f Y =%f%d%d%d"、lPoint.x、lPoint.y、aPixel [0]、aPixel [1]、aPixel [2]); '
iphone - glReadPixelsはopenGL ES 2でバッファをクリアしますか?
私は OpenGL ES 2 描画アプリ (iOS 4) を持っているので、フレームごとにクリアするのではなく、CAEAGLLayer でバッキングを保持しています。
以下のコードで作品をフォトアルバムに保存するためのボタンがあります。これが問題です。保存が完了して再び描画を開始すると、バッファ全体がクリアされ、空白の画面で最初から描画が開始されます。これを防ぐ方法はありますか?保存したままの状態から描き続けられるようにしたいです。
OpenGL ES 1 で保存するために同じコードを実行していますが、この問題は発生しません。また、この問題は iPhone デバイス (3GS) でのみ発生し、シミュレーターでは発生しません。アイデアがあれば教えてください。ありがとう。
iphone - iPhone OpenGL ES: glReadPixels が機能しない
glReadPixels を使用して単純なピッキング機能を実装しようとしていますが、1 色のオブジェクトをクリックすると、そのオブジェクトをクリックした場所に応じて異なる値が返されますか? 特別な照明などはありませんか?どうしたの?場合によっては、すべてゼロが返されます。私はすべて(テクスチャなど)をオフにしましたが、それでも喜びはありません。
この関数は、クリックしたピクセルの色を返すと思いましたか?
更新:修正するためにこれを追加しました:
java - OpenGL-特定の深さでのピクセルカラー
gluOrthoの観点から見たOpenGLで3Dシーンをレンダリングしました。私のアプリケーションでは、ボリューム100x70x60mm(1000x700x600ピクセル)の立方体の前面を見ています。この立方体の中に、ちょうど真ん中に位置し、立方体(半径300ピクセル)を「埋める」単純な青い球をレンダリングしました。
ここで、立方体内の特定のポイントでのピクセルのカラー値(3D)を読み取りたいと思います。つまり、ポイント(100,100、-200)が青か空白(黒)かを知りたいのです。
glReadPixelsは色の2D抽出のみを許可し、DEPTH_COMPONENTで試しましたが、これがバイト形式で何を返す必要があるかわかりませんか?2つを組み合わせる方法はありますか?私は何かが足りないのですか?
私はJavaとJOGLでEclipseを使用しています。
android - glReadPixels() フレームを再構築する Android の問題
Android を使用した拡張現実に関するプロジェクトに取り組んでいます。コードはカメラ ビデオをキャプチャし、マーカーを見つけて、その上に立方体を表示します。この後、モーション ベクトル (x 方向と y 方向に移動したピクセルの形式) が検出されます。私がする必要があるのは、GLレイヤーからピクセルを読み取り、モーションベクトルで指定された距離だけ移動した後、再度描画することです。GL レイヤーは、透明レイヤーである GLSurfaceView クラスを使用して指定されます。私が直面している問題は、glReadPixels() を使用してピクセルを読み取り、それを 480x800 配列 (nexus 1 画面解像度) に変換すると、キューブの 1 つではなく 3 つの異なる部分が得られることです。この後、ピクセルをモーションベクターで移動し、glDrawPixels() を使用してピクセルをフレームバッファーに戻すつもりです。同じ解釈を手伝ってください。glReadPixels を使用しているときに欠けているものはありますか?また、同じことを達成するのに役立つ他の機能があるかどうかもわかりません。glBlitFrameBuffer() を使用することを考えていましたが、これは Android GL10 クラスではサポートされていません。ピクセルを読み取って、MatLab を使用して再構築したピクセルの画像と共に 2D マトリックスに変更するコードの一部を添付しました。申し訳ありませんが、画像の投稿は許可されていません。画像を見て誰かが私を助けてくれる場合は、ここに投稿してください。写真を郵送できます. トンありがとう!!! ピクセルを読み取って、MatLab を使用して再構築したピクセルの画像と共に 2D マトリックスに変更するコードの一部を添付しました。申し訳ありませんが、画像の投稿は許可されていません。画像を見て誰かが私を助けてくれる場合は、ここに投稿してください。写真を郵送できます. トンありがとう!!! ピクセルを読み取って、MatLab を使用して再構築したピクセルの画像と共に 2D マトリックスに変更するコードの一部を添付しました。申し訳ありませんが、画像の投稿は許可されていません。画像を見て誰かが私を助けてくれる場合は、ここに投稿してください。写真を郵送できます. トンありがとう!!!
どんな助けでも大歓迎です。
performance - glReadPixels() GL_DEPTH_COMPONENT の読み取りが遅い
私のアプリケーションは、フレームバッファから深度情報を読み取ることに依存しています。これを glReadPixels(0, 0, width, height, GL_DEPTH_COMPONENT, GL_FLOAT, &depth_data) で実装しました
ただし、これは非常に遅く実行され、アプリケーションがスムーズな 30fps からラグのある 3fps になります。他のディメンションまたはデータを読み戻そうとすると、許容レベルで実行されます。
概要を説明するには:
- glReadPixels なし -> 毎秒 30 フレーム
- glReadPixels(0, 0, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &depth_data); -> 毎秒 20 フレーム、許容範囲
- glReadPixels(0, 0, 幅, 高さ, GL_RED, GL_FLOAT, &depth_data); -> 毎秒 20 フレーム、許容範囲
- glReadPixels(0, 0, 幅, 高さ, GL_DEPTH_COMPONENT, GL_FLOAT, &depth_data); -> 毎秒 3 フレーム、受け入れられない
最後の呼び出しが他の呼び出しに比べて非常に遅いのはなぜですか? それを改善する方法はありますか?
幅 x 高さは約 100 x 1000 で、サイズを大きくすると呼び出しが遅くなります。
ピクセルバッファオブジェクトも使用しようとしましたが、これはパフォーマンスに大きな影響を与えず、glMapBuffer() 呼び出しまで速度が遅くなるだけです。
(私はこれを MacBook Air nVidia 320m グラフィックス OS X 10.6 でテストしましたが、不思議なことに、私の古い MacBook Intel GMA x3100 では深度バッファの読み取りが最大 15 fps でした。)
更新: GLUT_MULTISAMPLE を glutInitDisplayMode オプションから除外すると、アプリケーションが再びスムーズな 20fps に戻るという大きな違いが生まれました。そもそもオプションが何をするのかわかりません。誰か説明できますか?