問題タブ [fbo]

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 投票する
1 に答える
8785 参照

ios - OpenGL ES から iOS のビデオへ (iOS 5 テクスチャ キャッシュを使用したテクスチャへのレンダリング)

CameraRippleエフェクトを使った Apple のサンプル コードを知っていますか? さて、openGLが水のクールな効果をすべて行った後、カメラ出力をファイルに記録しようとしています。

void * buffer 内のすべてのピクセルを読み取り、CVPixelBufferRef を作成して AVAssetWriterInputPixelBufferAdaptor に追加する glReadPixels でそれを実行しましたが、遅すぎます。FBO とテクスチャ キャッシュを使用すると、同じことができますが、より高速であることがわかりました。Apple が使用する drawInRect メソッドのコードは次のとおりです。

それはビデオを記録し、それはかなり速いですが、ビデオはただ黒いだけです。

更新として、ここに私が試した別の方法があります。私は何かが欠けているに違いない。viewDidLoad で、openGL コンテキストを設定した後、次のようにします。

次に drawInRect で: 私はこれを行います:

それでも、nil ではなく 0x000000001 である renderTexture の bad_acsess でクラッシュします。

アップデート

以下のコードを使用して、実際にビデオ ファイルをプルすることができましたが、緑と赤のフラッシュがいくつかあります。BGRA pixelFormatType を使用します。

ここでは、テクスチャ キャッシュを作成します。

そして drawInRect でこれを呼び出します:

ここでこれらすべてを実行しないことで、これを大幅に最適化できることはわかっていますが、機能させたいと思っていました。cleanUpTextures では、textureCache を次のようにフラッシュします。

RGBA に問題があるか、わかりませんが、まだキャッシュが間違っているようです。

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

opengl-es - LibGDX-FBOを使用してテクスチャにスプライトを追加

LibGDXを使用して単純なペイントアプリに取り組んでいますが、使用しているセットアップで正しく「ペイント」するのに問題があります。私がこれを行おうとしている方法は、スプライトを使用して描画し、適切な場合はLibGDXのFBOコマンドを使用して、これらの個々のスプライトを背景テクスチャに追加することです。

私が抱えている問題は、ブレンドに関連する問題です。作成しているこのテクスチャにスプライトを追加すると、前に描画されたピクセルの上にあるスプライトの透明なピクセルが大幅に明るくなります。明らかにあまり良く見えません。以下は、「ブラシ」として緑>赤のグラデーションの円を使用した結果の様子です。上の行は現在、背景テクスチャの一部ですが、下の行はまだ純粋にスプライトで描画された形式のままです。

http://i238.photobucket.com/albums/ff307/Muriako/hmm.png

基本的に、各スプライトの透明な領域はその下のすべてを明るくしているので、完全に透明にする必要があります。私は多くの異なるブレンディングモードの組み合わせをいじり回しましたが、これ以上良いものを見つけることができませんでした。たとえば、GL_SRC_ALPHA、GL_ONE_MINUS_SRC_ALPHAにはこの問題はありませんでしたが、代わりに、各スプライトの透明なピクセルがアルファで低くなり、下のレイヤーの色の一部を帯びているように見えます。これはさらに厄介なようです。

リクエストに応じてコードスニペットを投稿できますが、これらの問題を修正しようとしてからコードが少し混乱しているため、必要なビットだけを追加したいと思います。

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

opengl-es - OpenGL-es 1.1 FBO のピクセル データを変更する

FBOピクセルデータを取得してから、グレースケール化し、画像をそのFBOに戻す方法はありますか?

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

opengl-es - OpenGL-es 1.1 グレースケール FBO

FBO があり、テクスチャとオルソ (2D) メッシュにロードするだけです。FBO テクスチャをグレースケールダウンするにはどうすればよいですか?

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

opengl - LibGDX FrameBuffer ブレンディング

ここで簡単な背景を説明します。私は、Android ゲーム開発の最初の試みで LibGDX フレームワークを使い始めたところです。スプライトを配置して FrameBuffer クラスを使用してテクスチャを構築しようとしています。このテクスチャをレベルごとの動的/ランダム背景の一種として使用したいと考えています。

残念ながら、スプライトが FrameBuffer に追加されると、スプライトの下にあるものはすべて完全に上書きされるようです。一般的にはこれで問題ありませんが、これに使用するスプライトの多くには半透明のピクセルがあり、これらの透明なピクセルはその下の塗りつぶされたピクセルを上書きするため、ベースの背景色まで透けて見え、非常に不快な効果が生じます.

言い換えれば、複数のスプライトから 1 つのソリッド テクスチャを作成し、下のピクセルを完全に削除せずに (少なくとも上のピクセルが半透明の場合) 互いの上に重ねる最良の方法は何ですか?

これについてかなりの時間実験して検索したので、私は途方に暮れています。御時間ありがとうございます!

- - - 編集 - - -

以下は、スプライトを FBO に追加するために使用されるコードです。今のところ、テスト目的でランダムな場所に 1 つのスプライトを追加しているだけなので、非常に不足しています。リクエストに応じて喜んでコードを投稿しますが、この問題に取り組むために、セットアップ全体は現在非常に最小限です。

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

android - Andengine は、ゲームの一時停止時に RenderTexture からピクセルを取得します

状況は次のとおりです。ピクセルを から保存し、ゲーム アクティビティが一時停止したとき (ホーム ボタンが押されたとき) にそれらを保存し、保存されたビットマップでレンダリング テクスチャを復元する必要がありますRenderTextureBitmap

現在、私は次のことを行っています:

レンダリング テクスチャを呼び出すエンジンに a を登録onPauseし、Rメソッドを呼び出して再描画を強制し、1 秒間スリープして描画が行われるようにし、最後に を呼び出します。Draw HandlergetBtimap()enderSurfaceView.reqestRender()Threadsuper.onPause()

これは良い方法ではないと思います:)。

問題は、適切に実行するために GL コンテキストを必要とするRenderTexture.getBitmap()呼び出しであるため、レンダー スレッドで呼び出す必要があることです。glReadPixels()

GLコンテキストが破棄される前に通知を受ける方法はありますか?

または、これを別の方法で行う方法についての提案はありますか?

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

opengl-es-2.0 - FBOレンダリング用のOpenGLES2.0オフスクリーンコンテキスト

FBOを使用して(WSのないコンソール環境で)オフスクリーンレンダリングを実行したいと思います。OpenGLコンテキストを作成する必要があり、少なくとも操作にはダミーウィンドウを作成する必要があることを知っているので、次の初期化を行いました。

このタイプの初期化はターゲットシステムで機能しますが、FBOに何かを描画し、それを読み戻した後(getReadPixels)、常に黒い画像しか取得しません。X11の上で同じコードを試しましたが、eglCreateWindowSurface呼び出しで(すでに)エラーで失敗します:EGL_BAD_NATIVE_WINDOWは機能しますが、この呼び出しに実際のX11windowネイティブウィンドウハンドラーを渡すと機能します(この場合、有効なレンダリング画像を読み戻すことができます)また)

FBOレンダリングに使用する必要があるサーフェスのタイプについて明確にしてください。または私は何を間違えますか?

残りの描画コード://initおよびstartopengl es shanders Shaders_Init();

前もって感謝します!!!!!よろしく、ゲザ

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

opengl - GLSL でのマルチパス、マルチ RT レンダーの不可解な問題

マルチパス、マルチ RT ピンポン レンダリングで奇妙な問題が発生します

3 つのシェーダーと 1 つの FBO を使用していますが、どの段階でもエラーは発生しません。私はopengl 4を使用しているため、glBegin/glEndは使用していません。変換には独自のマトリックスを使用し、レンダリングには頂点バッファーを使用しています

このテストの一般的な考え方は、3 つの異なる色を 3 つの個別の fbo 添付ファイルにレンダリングすることです (最初のパスで vbo を 2 回レンダリングするのは効率的ではないことは理解していますが、これは他のソースの問題を理解するのに役立つだけです)。テクスチャの別のセットを fbo にバインドし、最初のセットをサンプラーとして使用します。最後のパスは、結果をバック バッファーにブレンドすることです。

奇妙なのは、出力が両方の四角形が赤く表示されることです (これらの値は 2 番目のシェーダーから取得されるため)。

2 番目のサンプラーから常に取得するように 2 番目のシェーダーの関数 SamplePix を変更すると、両方とも緑色に表示され、3 番目からルックアップするとすべて黄色に表示されますが、1 つからしか読み取れないようです。

今のところ、各サンプラーから読み取ることができる理由を説明できないようですが、ループが正しく検索されないようです (シェーダー 2)。

また、シェーダー 2 でサンプリングされたテクスチャのレンダリングに切り替えると、2 番目のパスで黒いクワッドが表示されます (画像 2)

うまくいけば、誰かが問題に光を当てることができます。(最初のパスの後に同期フェンス オブジェクトを追加しようとしましたが、違いはありませんでした)

赤

テクスチャ サンプル:

テックス