問題タブ [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 に答える
559 参照

opengl - GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXTエラー

OpenGLコードでFBOを使用していますが、でコンパイルエラーが発生しGL\_FRAMEBUFFER\_INCOMPLETE\_DUPLICATE\_ATTACHMENT\_EXTます。これの原因は何ですか?どうすれば修正できますか?

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

opengl - キューブ マップへのレンダリング

ARB_geometry_shader4によれば、ジオメトリ シェーダーを使用してキューブ マップの 6 つの面にシーンをレンダリングし、キューブ マップをフレーム バッファー オブジェクトにアタッチすることができます。この方法でシャドウ マップを作成したいと思います。ただし、解決できない競合があるようです。

  1. 内部タイプとして GL_DEPTH_COMPONENT を持つテクスチャのみを GL_DEPTH_ATTACHMENT_EXT にアタッチできます。
  2. 深度テクスチャは 1D または 2D のみです。
  3. キューブ マップをアタッチする場合、アタッチされている他のすべてのテクスチャもキューブ マップである必要があります。

そのため、キューブ マップにレンダリングする場合、深度テストを使用できないようです。または、ここで何が欠けていますか?

編集:新しい Nvidia ドライバー (180.48) は深度キューブ マップをサポートしているようです。

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

c++ - GL_RGBA16F_ARB-textureを使用すると、がらくただけが含まれますが、エラーメッセージは表示されません

次のようなテクスチャを生成します。

レンダリング用にフレームバッファオブジェクト(FBO)にアタッチします。内部形式をに設定すると、これらすべてが魅力のように機能しますGL_RGBA16。しかし、私はより高いダイナミックレンジが必要であり、それでうまくいくGL_RGBA16F_ARBかもしれないと考えていました。

残念ながら、上記のコードでに置き換えるGL_RGBA16と、テクスチャが機能しなくなったようです。GL_RGBA16F_ARBFBO /テクスチャスティックにレンダリングしようとするものは何もありません。テクスチャを使用すると、ランダムなゴミが含まれます。(紫が多いのですが)何が悪いのかを示唆するエラーメッセージが表示されていれば、それほどイライラすることはありませんが、見つからないようです。つまり、-callの後にglGetError()戻り、テクスチャをアタッチすると戻ります。0glTexImage2DglCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT)GL_FRAMEBUFFER_COMPLETE_EXT

私はまだいじっていglClampColorARB(...)ません...まだ:)

  1. 思いもよらなかった場所・道の間違いをチェックするのを忘れてしまいましたか?
  2. -texturesGL_RGBA16F_ARBには、私が行っていない特別な処理が必要ですか?
  3. 他に間違っている可能性のあるものはありますか?

すべてがスムーズに動作するので、私は困惑していGL_RGBA16ます... :(

編集:を使用GL_RGBA16F_ARBすると、画面にレンダリングしようとした最初のフレームが作成されません。どこかでエラーメッセージが表示されるはずです。

編集: ShadowIceの動作するコード例を調べることにより、FBOの深度バッファーglRenderBufferStorageEXT(...) GL_DEPTH_COMPONENT24を変更すると問題が解消され、2番目のパラメーターとしてではなくを指定することがわかりましたGL_DEPTH_COMPONENT16なぜこれが機能するのかわかりませんが、どうやら機能しているようです。

また、ShadowIceのコードは、そこで反対の置換を行うと私のように壊れます。

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

opengl - ウィンドウより大きいopenGL FBOを保存する際の問題

私は OpenGL オフスクリーン フレームバッファ オブジェクトにレンダリングしており、それを画像として保存したいと考えています。FBOは表示サイズよりも大きいことに注意してください。オフスクリーン バッファにレンダリングし、それをテクスチャとして使用できます。オフセットを使用して、ディスプレイ全体でこの大きなテクスチャを「スクロール」できます。これにより、ウィンドウよりも大きなコンテキストにレンダリングすることを確信できます。

オフスクリーン バッファを画像ファイルに保存すると、常にトリミングされます。保存用のコード フラグメントは次のとおりです。

画像の内容は切り取られ、表示されている部分は正しく保存されます (つまり、ピクセル形式のエラーや GL_RGB の問題などはありません) が、残りのスペースは 1 つの色で塗りつぶされます。

だから、私の質問は - 私が間違っているのは何ですか?

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

opengl - FBOのglReadPixelsがマルチサンプリングで失敗する

色と深さのアタッチメントが付いたFBOオブジェクトがあり、レンダリングしてから読み取り、glReadPixels()マルチサンプリングサポートを追加しようとしています。
代わりに、カラーアタッチメントとデプスアタッチメントの両方glRenderbufferStorage()を求めています。glRenderbufferStorageMultisampleEXT()フレームバッファオブジェクトは正常に作成されたようで、完了として報告されます。
レンダリングした後、私はそれから読み込もうとしていglReadPixels()ます。サンプル数が0の場合、つまりマルチサンプリングが無効になっている場合、完全に機能し、必要な画像が得られます。サンプル数を別の値、たとえば4に設定すると、フレームバッファーは正常に構築されますが、glReadPixels()失敗します。INVALID_OPERATION

誰かがここで何が間違っている可能性があるか考えていますか?

編集:glReadPixelsのコード:

ここで、ptrはwidth *heightuintsの配列を指します。

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

opengl - 画像操作にOpenGLのフレームバッファオブジェクト(FBO)を使用していますか?

FBOは、OpenGL描画アクションを使用した高速画像操作に使用できることを読みました。誰かがこれを行う方法の基本を知っていますか?またはそれを説明するいくつかの非常に簡単なサンプルコードがありますか?

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

c++ - OpenGLとFBORTT、すべきでないときにブレンドする

これは本当に簡単なはずですが、何時間も費やしていて、何が起こっているのかわかりません。

フラットカラーのフルスクリーンクワッドをテクスチャにレンダリングしてから、glGetTexImageで結果を読み戻しています。これはGPGPUに関連しているので、アルファ値を他の3つと同じように動作させたいと思います。GL_RGBA32F_ARB重要な場合は、10.5のMacBook ProでFBO、テクスチャフォーマット、NVidiaカードを使用しています。

指定したアルファが1の場合にのみ、正しい色が返されます。他の値では、明示的に無効にしたにもかかわらず、フレームバッファにすでにあるものとブレンドしているように見えますGL_BLEND。ブレンドと使用も有効にしてみglBlendFunc(GL_ONE, GL_ZERO)ましたが、最終結果は同じです。レンダリングする前にフレームバッファをゼロにクリアすることで修正できますが、なぜそれが必要なのかを理解したいと思います。2番目のテストとして、元の4チャンネルの色を元に戻したい場合に、2つの重なり合う四角形をレンダリングするとブレンドされた結果が得られます。確かに、単色のクワッドはフレームバッファ内のピクセルを完全に上書きする必要がありますか?根本的なことを誤解していると思います。ありがとう。

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

opengl - OpenGL で複数のカラー アタッチメントを使用してマルチサンプリングされた FBO をブリッティングする

OpenGL プログラムに複数のカラー アタッチメントを持つフレーム バッファ オブジェクトがあり、それをマルチサンプル FBO にアップグレードしようとしています。

私が理解しているように、マルチサンプリングされた FBO はレンダー バッファー、特に を使用して作成されたもののみを使用できますglRenderbufferStorageMultisampleEXT。テクスチャでこの FBO に何かをレンダリングしたい場合は、付属のテクスチャを使用して 2 番目の FBO を作成し、次に を使用してマルチサンプリングされた FBO を通常の FBO にブリットする必要がありますglBlitFramebufferEXT

私が見た非常にまばらな例は、単色のアタッチメントを想定しています。複数の色のアタッチメントをブリットしたい場合はどうすればよいですか?

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

opengl - FBO の使用に関する問題: 最初のパスのレンダリングのみ。レンダー ターゲットを元に戻す際に問題が発生する可能性はありますか?

FBOの使用には大きな問題があります。

FBO とマルチテクスチャリングを使用したマルチパス ディスプレイがあります。表示の最初の実行が終了するまで、すべてが正常に機能しているようです。

表示関数の最後に glBindFrameBufferEXT(GL_FRAMEBUFFER_EXT, 0) を使用してレンダー ターゲットを画面に戻しますが、その後のパスは有効になりません。画面がフリーズしそう…

原因は何ですか?推測はありますか?

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

iphone - 描画時のOpenGLESフレームバッファの奇妙なミラーリング

私は本当にこれに頭を悩ませることはできません:

以前はフレームバッファを機能させることができませんでしたが、現在は機能しています。ただし、フレームバッファから生成されたテクスチャでこの非常に奇妙なミラーリングが行われているため、理由がわかりません。基本的に、GL_TRIANGLE_FANを使用して0,0でテクスチャを描画しようとします。テクスチャは、右上隅に通常どおり(多かれ少なかれ)表示されますが、ミラーリングされて左下隅にも表示されます。ビューポート領域のほとんどまたはすべてを同じテクスチャで埋めると、醜いZファイティングのオーバーラップが発生します。

スクリーンショットはこれをより正義にします。

元の画像:

オリジナルhttp://img301.imageshack.us/img301/1518/testsprite.png

(0,0)で80x80を描画

80x80 http://img407.imageshack.us/img407/8339/screenshot20100106at315.png

(0,0)で100x180を描画

100x180 http://img503.imageshack.us/img503/2584/screenshot20100106at316.png

(0,0)で320x480を描画

320x480 http://img85.imageshack.us/img85/9172/screenshot20100106at317.png

そしてここに私のコードがあります:

ビューを設定します。

テクスチャバッファを作成します。

レンダリングループを実行します。

最初のパスで、レンダリングループは画像をFBOに描画します。