問題タブ [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.
c++ - glReadPixels からキャプチャしたスクリーンショットを wxWidgets ダイアログ/パネルに描画する方法
OpenGL ウィンドウと wxWidget ダイアログがあります。ダイアログに OpenGL をミラーリングしたい。だから私がやろうとしていることは次のとおりです。
- opengl のスクリーンショットをキャプチャします。
- wxwidgets ダイアログに表示します。
何か案が?
更新: これは私が現在 glReadPixels を使用している方法です (一時的に FreeImage を使用して BMP ファイルに保存しますが、wxImage に直接転送する方法があれば、ファイルの保存が削除されることを期待しています)
ios - iOS の OPENGL ES、glreadpixel が BGRA 形式で動作しない
iOS デバイス (ipad1 と ipad2 を試しました) では、glreadpixel は RGBA ピクセル形式では機能しますが、BGRA ピクセル形式では機能しません。以下のコードでは、GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES を使用してネイティブのピクセル形式である GL_BGRA_EXT を取得していますが、glgeterror は GL_INVALID_ENUM を返します。これは、形式が GL_RGBA または GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES の値でない場合に GL_INVALID_ENUM が生成されるというopengl ドキュメントhttp://www.khronos.org/opengles/sdk/1.1/docs/man/glReadPixels.xmlのステートメントと矛盾します。
誰かがこれについて何か考えていますか?
iphone - Talking TomcatアプリケーションがiPhoneで行うように画面ビデオを記録する方法は?
デバイス自体から YouTube にビデオをアップロードできるように、ゲームのゲームプレイを記録しようとしています...iPhone 用の Talking tomcat アプリと同じことをしようとしています..ビデオを記録してから再生するなど...
フレームバッファデータを読み取り、AVFoundationフレームワークのAVAssetWriterの助けを借りてビデオに書き込むためにglReadPixels()を使用しています。ただし、各図面のデータを読み取ると、glReadPixels を使用している場合にのみ、FPS が約 30-35 から 2-3 に減少します。
Talking tomcat も Opengl ES の助けを借りて作成されていると思います。ビデオ録画機能もありますが、各フレームの読み取り中に速度が低下することはありません.... ?
c++ - openglステンシルバッファがゼロで初期化されていませんか?
私は MS WindowsXP で作業しています。私のビデオ カードは itel GMA4500 です。私のコードは次のとおりです。
しかし、データ バッファーを確認すると、バイトがすべてゼロではないことがわかります。何が問題なのですか?
はい、確かにステンシル バッファがあり、glReadPixels を呼び出した後、glGetError をチェックしましたが、エラーはありませんでした。また、memset を使用してデータ バッファーをゼロで埋めようとしましたが、結果は変わりませんでした。
c++ - glReadPixels からの HBITMAP の作成
glReadPixels() 呼び出しによって返されたデータから HBITMAP を作成する必要があります。
私は使用してみました:
そして、それは mspaint OK に貼り付けられます (したがって、データは良好です)。
android - Android OpenGL ES 2.0 -- glReadPixels() と glTexImage2D() は黒いテクスチャを描画しますか?
私は、EGL コンテキストの損失と再作成の間にフレームバッファー オブジェクトのカラー バッファーをキャッシュして再描画するための Android コードに取り組んでいます。開発は、主に Honeycomm を実行している Xoom タブレットで行われています。とにかく、私がやろうとしているのは、FBO で glReadPixels() を呼び出した結果を直接 ByteBuffer に格納し、そのバッファを glTexImage2D() で使用して、(現在クリアされている) フレームバッファに戻すことです。これはすべて正常に動作しているようです — ByteBuffer には正しい値 (Java が符号なしバイトを理解できないため、ピクセルの [-1, 0, 0, -1] など) が含まれており、GlErrors はスローされていないようです。クワッドは画面の右側に描画されます (現在、テスト目的でフレーム バッファーの左上の 4 分の 1 です)。
ただし、何を試しても、 glTexImage2D() は常にプレーンな黒いテクスチャを出力します。私は以前にこれに関していくつかの問題を抱えていました — ビットマップを表示するとき、私は最終的にバッファで基本的な GLES20.glTexImage2D() を使用しようとすることをあきらめ、ビットマップを処理する GLUtils.glTexImage2D() を使用することにスキップしました。残念ながら、それはここでは選択肢が少ないため (実際に ByteBuffer を Bitmap に変換して、GLUtils を使用できるようにしましたが、あまり成功しませんでした)、本当にアイデアが尽きてしまいました。
glTexImage2D() が完全に良好な ByteBuffer を正しく処理しない原因となる可能性のあるものを誰か考えられますか? あらゆる提案を歓迎します。
ちなみに、gfx.drawTexture() はクワッドを構築し、現在バインドされているフレームバッファに描画します。このコードは、私のプロジェクトの他の部分で十分にテストされています。ここでは問題になりません。
c++ - 別のスレッドで glReadPixels を呼び出す方法は?
別のスレッドで glReadPixels を呼び出すと、データが返されません。呼び出しスレッドで新しいコンテキストを作成し、メモリをコピーする必要があることを示唆するどこかを読みました。これをどのように正確に行うのですか?
これは私が使用する glReadPixels コードです:
または、別のコードを使用するよう提案しているこのスレッドを読みましたが (最後を参照)、origX、origY、srcOrigX、srcOrigY とは何かわかりません。
ios - OpenGL ES - テクスチャの品質とテクスチャのサイズを小さくする
OpenGL ES でテクスチャの品質を「低下」させることは可能ですか? 劣化とは、画像をよりピクセル化/ブロック化/ぼやけたものにすることを意味します。
私の目標は、テクスチャのサイズを小さくしてglReadPixels
実行を高速化することです (VRAM から RAM への転送バイト数を減らします)。
glCopyTexImage2D
おそらく、コピーされたテクスチャの品質が低くなるように(できればサイズが小さくなるように)呼び出す前に何かできるでしょうか?
c# - OpenGL: glGetError は 0 を返しますが、glReadPixels は「失敗」します
問題の概要:
OpenGL glReadPixels を使用してスクリーンショットを取得していますが、バッファは変更されていません。glGetError を使用して最後の関数からエラーを取得すると、すべてが正常であるかのように 0 が返されます。
オンラインで徹底的に調査しましたが、このような問題に直面している人はいません。
詳細に:
基本的に OpenGL を C# にラップする CsGL.dll を使用しており、GL を使用するために必要な初期化を行いました。そして wglMakeCurrent(RC, DC) を呼び出します。
Windows API 関数の単純なラッパーを使用していることに注意してください。私が使用したこの初期化のコードは次のとおりです。
User.GetForegroundWindow() を hWnd として送信しました。
この初期化の後、スクリーンショットを画像に取り込もうとします(また、それを単純なバイト配列に読み込もうとしました)
glReadPixels 使用の短い疑似コード:
シンプルで小さい byte[] で試してみると、次のようになりました。
そして、byte[] はすべてゼロでした。また、配列のサイズを大きくして(0、0、10、10を保持して)試しましたが、それでも役に立ちません。
どちらの場合も、結果は同じです。glGetError 呼び出しは各 GL 関数呼び出しの後に 0 を返しますが、バッファーはまったく変更されません。
Back.bmp と Front.bmp は両方とも完全に黒です。
私が間違っていることを教えてください。ありがとう
java - glReadPixel がゼロとエラー 1282 を返す (Android)
これが私のピッキングコードです
混乱して申し訳ありません。とにかく、このコードは、どこをクリックしても常に (0,0,0) を返すようです。テスト目的で赤い四角、緑、四角、青の背景があり、四角の1つが描画され、画面がそのように押されるたびに、このメソッドが呼び出されます
画面に黒いスペースはありませんが、常に黒い値が表示されるので、単なる精度の問題ではないと確信しています。そこにビューポートの値を返すログタグがあり、それらは問題ありません.xy座標も確認しましたが、1282エラーコードだけが正当であるようです。
誰かがこれが何であるか考えていますか?
編集:
関数の前後に glGetError() を配置したため、問題が読み取りピクセル関数から発生していることがわかります。
スケーリングを取り除くことは役に立たなかったが、それはロングショットだった
Buffer を FloatBuffer に変更したところ、(0, 0, 0) の代わりに (0.0, 0.0, 0.0) が返ってきました。また、エラーが 1280 (GL_INVALID_ENUM) になっていることにも気付きました。これが一歩前進かどうかはわかりません。エラー1282でない場合、このエラーを修正する方法を知っている人はいますか?