問題タブ [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.
opengl - テクスチャが重なっている glReadPixels() アルファ
glReadPixel() でテクスチャのアルファ値を取得しようとしています。私が抱えている問題は、アルファ値のピクセルが 0.5f を下回ると、背景オブジェクトのアルファ値を結合し始めることです。0.0f から 0.49999f までのアルファ値を取得できません。背景オブジェクトのアルファ値を無視して、一番上のテクスチャまたはオブジェクトの 1 ピクセルのアルファ値だけを取得する方法はありますか?
opengl - glReadPixels()が不正確な値を返す
フラッドフィルアルゴリズムを実装しようとしています。しかし、glReadPixels()は、私が設定した実際の値とはわずかに異なるピクセルのfloat RGB値を返しているため、アルゴリズムが失敗します。なぜこうなった?
返されたRGB値を出力して確認します。
iphone - glReadPixels の代わりに CVOpenGLESTextureCacheCreateTextureFromImage
丸 3 日間、glReadPixels に基づく AVAssetWriter のパフォーマンスを改善しようと試みてきました。Apple の RosyWriter と Camera Ripple のコード、Brad Larson の GPUImage を調べましたが、まだ頭を悩ませています。また、これらのリンクに記載されている実装を使用しようとしています。
ios-5-texture-cache-api を使用したテクスチャへのレンダリング
より高速な代替-glreadpixels-in-iphone-opengl-es-2-0
...他にもたくさんありますが、何を試してもうまくいきません。ビデオが処理されないか、黒くなるか、さまざまなエラーが発生します。ここではすべてを説明しません。
質問を簡単にするために、画面上の openGL プレビュー FBO からスナップショットを取得することに焦点を当てたいと思いました。この機能の実装を 1 つだけ取得できれば、残りの部分も解決できるはずです。上記の最初のリンクから実装を試してみましたが、これは次のようになります。
ここで正確に何が起こるはずですか?私のバッファは最終的にゼロの集まりになるので、コンテキストからピクセルを引き出すために何か追加する必要があると思いますか? ...または何が欠けていますか?
私が達成したいのは、私が現在使用しているものと同等の高速化です。
iphone - OpenGL ES-glReadPixels vs TextureCached
OpenGLES2.0のフレームバッファからピクセルデータを読み取る必要があります。これはglReadPixelsで簡単に実行できることは知っていますが、iOS 5以降では、TextureCachedオブジェクトを使用してより高速に読み取ることができます。
私はBradLarsonによって提案されたソリューションを実装しました(私はいつも彼に感謝します、彼は多くの知識を共有するコミュニティのために素晴らしい仕事をしていると思います...)iPhone OpenGLES2.0のglReadPixelsのより速い代替手段
すべてが機能しているようです。適切なデータを取得し、glReadPixelsと比較すると、データは同じです。私の問題は、この2つの可能なソリューションのパフォーマンスを測定したときに発生しました(データの取得にかかる時間)。
ここに私の結果:
(フレームバッファとテクスチャサイズ320x480ピクセル)
GPUImageProcessingDemo [1252:707] glReadPixels 2750 us
GPUImageProcessingDemo [1252:707]テクスチャ読み取り1276 us
GPUImageProcessingDemo [1252:707] glReadPixels 2443 us
GPUImageProcessingDemo [1252:707]テクスチャ読み取り1263 us
GPUImageProcessingDemo [1252:707] glReadPixels 2494 us
GPUImageProcessingDemo [1252:707]テクスチャ読み取り1375 us
これは、glReadPixelsを使用するときに必要な時間のほぼ半分であるため、非常に興味深いようです。問題は、テクスチャサイズを少し大きいものに変更すると、次の結果が得られることです。
(フレームバッファとテクスチャサイズ480x620ピクセル)
GPUImageProcessingDemo [1077:707] glReadPixels 2407 us
GPUImageProcessingDemo [1077:707]テクスチャ読み取り2842 us
GPUImageProcessingDemo [1077:707] glReadPixels 2392 us
GPUImageProcessingDemo [1077:707]テクスチャ読み取り3040 us
GPUImageProcessingDemo [1077:707] glReadPixels 2224 us
これは意味がありますか?それとも、常により良い結果が得られると期待すべきですか?
iphone - glReadPixels が iPhone で動作しない
iPhoneでGLViewのスクリーンショットを撮ろうとしています。次のコードを書きました。
これはシミュレーターで完全に機能します。残念ながら、iPhone 4S glReadPixels で実行しようとした瞬間は何もしません。意図的に配列を 0xff に memset して、それが何かを行っているかどうかを確認できるかどうかを確認しました。また、配列に何を設定しても、glReadPixels は何もしません。また、エラーは報告されません。
iPhone がセットアップをしてくれない限り、私はマルチサンプル バッファを使用していません。
何が起こっているのか誰にもアイデアがありますか? それは私を怒らせます:(
java - glReadPixels()Bufferedimageで画像を水平方向に反転し、ImageIOで出力するにはどうすればよいですか?
スクリーンショット画像を反転するにはどうすればよいですか?私は他のどこにも私の問題を見つけることができません。
コード例:
基本的に、コードは画面をキャプチャして「png」形式で保存するために機能します。
ただし、出力は画像が水平方向に反転します。これは、
が左下から右上に読み取られるglReadPixels();
ためです。
では、画像を水平方向に反転させるにはどうすればよいImageIO.write();
ですか?
よろしくお願いします、ローズ。
screenshot - LWJGLを使用して簡単なスクリーンショットメソッドを作成するにはどうすればよいですか?
ですから、基本的にはしばらくLWJGLをいじっていたのですが、周りの煩わしさで急に止まりましたglReadPixels()
。
そして、なぜそれが左下->右上からしか読まないのか。
ですから、私はこれらすべてを理解したので、私自身の質問に答えるためにここにいます。
そして、私の発見が他の誰かに役立つかもしれないことを願っています。
補足として、私が使用しているのは次のとおりです。
file - OpenGL - ビデオ出力ファイルの作成
通常の画面出力の表示ではなく、OpenGL を使用してビデオ出力ファイルを作成できるようにしたいと考えています。私は glutPostRedisplay() または (SFML バージョン、このようなものです:) window.Display() を使用せず、代わりに glReadPixels() を使用することで考えています。
glReadPixels は、ピクセル コンテンツをメモリ内の配列に配置しますが (既にご存知かもしれません)、それをフレームに変換し、複数のフレームをビデオ ファイルにまとめるにはどうすればよいでしょうか? また、再生できるように、ビデオファイルはどのような形式になりますか?
これを行う理由を説明する必要があります。多くの物理シミュレーションでは、1 フレームを表示するのに十分な情報を計算するのに非常に長い時間がかかることがあるため、一晩実行したままにして、翌朝ビデオ ファイルを再生することをお勧めします。何が起こったのかを確認するために 5 分ごとに戻ってくる必要はありません。
c++ - glPixelStore での glReadPixels の使用
glReadPixels に関する複数のチュートリアルを見ましたが、混乱しています:
void glReadPixels(GLint x, GLint y, GLsizei 幅, GLsizei 高さ, GLenum 形式, GLenum 型, GLvoid * データ)
最後の引数は void ですか? チュートリアルを見たところ、引数は vector、unsigned char、GLubyte などとして宣言されていました...しかし、それは実際にはどういう意味ですか? また、glPixelStoref( , ) を呼び出す必要がありますか?