問題タブ [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.
python - OpenGLフレームバッファは遅く、自発的に停止します。広範囲に使用すると、システムクラッシュを引き起こす可能性もあります
どうやらフレームバッファは高速で、画面外でテクスチャにレンダリングしたり、単に物を事前に作成したりするための最良の方法です。
しかし、私のゲームはそれらをまったく好きではありません。現在のコードでは、フレームバッファが頻繁に使用され、場合によっては各フレームが数回使用されます。使用すると、ゲームの速度が低下し始めますが、すぐには動きません。時間がかかるようです(おそらく、蓄積されたメモリの問題ですか?)。一部の領域では、フレームバッファオブジェクトがゲームの速度を低下させないように見えますが、通常どおり続行する前にゲームが数秒間停止する場合があります。
フレームバッファが使用されていない領域ではゲームが高速であるため、フレームバッファが問題であると思います。
私はpyopenglでpythonを使用しています。OpenGLコードは他の言語のコードに似ているので、Pythonの知識はそれほど重要ではないと思います。
画面に直接レンダリングされるものもあれば、Surfaceクラスに関連する他のテクスチャにレンダリングされるものもあります。これは、気が変わる前にゲームを始めたpygameに似ています。
関連するコードは次のとおりです。
誰かがこれで私を助けることができればブラボー。私はFBOをまったく機能させるために何年も費やしました。彼らが適切に機能していないのはとてもイライラします。それらを取り除くことになると、それは再び悪夢です。しかし、私はゲームを速くするために必要なことは何でも直面しなければなりません。
opengl - OpenGL で FBO を処理する最良の方法は何ですか?
長い間、OpenGL FrameBuffer Objects (FBO) を処理する最良の方法は何だろうと思っていました。FBO の切り替えはコストがかかる可能性がありますが、新しいアタッチメントも定義します。
どうすれば速くできますか?
私はこれらの3つの間で躊躇します:
すべてに 1 つの FBO、アタッチメントを変更しますが、FBO を切り替えないでください
レンダリング パス内のレンダー ターゲット (サイズ + フォーマット) ごとに 1 つの FBO。つまり、同様のレンダー ターゲットに対して同じ FBO を再利用します。しかし、この方法では、カスタム ブラーには 4 つ以上の FBO がかかります。
レンダー ターゲットごとに 1 つの FBO。添付ファイルを 1 回だけ設定してから、FBO を切り替える
また、FBO スイッチの数を最小限に抑える必要がありますか (テクスチャ バインディングの数を最小限に抑えるように) ?
haskell - VBO/FBO/DisplayLists は Haskell の OpenGl バインディングでどのように機能しますか?
Haskell は、値の計算による計算に関するものです。
DisplayLists / FBOs / VBOs は本質的に非常にステートフルです。つまり、「ディスプレイリスト/バッファオブジェクトをください」。
これらのバインディングは Haskell でどのように機能しますか?
[私はモナドを理解しています。そのため、ふわふわした説明ではなく、技術的な説明が優先されます]。
ありがとう!
opengl - OpenGL FrameBuffer オブジェクトの奇妙な動作
私のアルゴリズムはこれです:
複数の場所からのシャドウ マッピングを使用してシーンを FBO にレンダリングする シャドウ マッピングを使用してシーンを画面にレンダリングする ...まだ実装しなければならない黒魔術... ステップ 1 のサンプルをステップ 2 の画像と組み合わせる
ステップ 1 と 2 をデバッグしようとしていますが、奇妙な動作に遭遇しています。各シャドウ マップ パスの私のアルゴリズムは次のとおりです。 各ライトの POV から深度配列テクスチャに接続された FBO にシーンをレンダリングします 視点からシーンをレンダリングし、頂点/フラグメント シェーダーを使用して深度を比較します
この方法でアルゴリズムを実行すると:
ポイントからFBOへのレンダリング ポイントからスクリーンへのレンダリング glutSwapBuffers()
スクリーン パスの法線ベクトルが正しくないように見えます (反転している可能性があります)。拡散照明の計算が正しくないため、それが問題であると確信していますが、マテリアルの色は正しく、影は正しい場所に表示されます。したがって、原因は法線だけにあるようです。
しかし、もしそうなら
render from point to FBO render from point to Screen glutSwapBuffers() //ここでは間違っている render from point to Screen glutSwapBuffers()
2 番目のパスは正しいです。フレームバッファ呼び出しに問題があると思います。以下のログから問題の内容を確認できますか? これは、「buffer」を grep したラッパ トレースからのもので、もう少し明確にするためにいくつかの編集が加えられています。
iphone - テクスチャまたはオフスクリーン フレームバッファへのレンダリング
OpenGLES
iPhoneでのテクスチャとオフスクリーン フレームバッファへのレンダリングに問題があります。
(出典: imagehost.org ) (出典: imagehost.org )
最初の画像はCAEAGLLayer
直接レンダリングされた麻雀牌を示していますが、これは正しいです。2 つ目は、オフスクリーン フレームバッファにレンダリングされたタイル、 を使用してテクスチャにコピーされ、 にglCopyTexImage2D
レンダリングされたテクスチャを示していますCAEAGLLayer
。どちらも背景に白い不透明クワッドを使用しています。また、テクスチャに直接レンダリングしようとしましたが、効果はオフスクリーン フレームバッファと同じでした。
フレームバッファを作成するための私のコード:
glDrawElements
インターレース頂点データ (座標、テクスチャ座標、色) を渡すために VBO を使用する 1 回の呼び出しで、テクスチャ アトラスからすべてのタイルを描画します。RGBA8888テクスチャ形式を使用し、ブレンド機能を使用して 2 つの三角形 (四角形) に各画像を描画しglBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
ます。深度バッファーは使用しません (すべての場合)。
誰かが私に何が問題なのか教えてもらえますか?
opengl - GLSL での FBO データの取得
遅延レンダリングを試すために、MRT を OpenGL で動作させようとしています。私が把握している状況はこうです。
- 3 つのレンダー バッファーを作成します (たとえば)。2 つの RGBA8 と 1 つの Depth32。
- FBO を作成します。
- レンダー バッファを FBO にアタッチします。カラー バッファーの場合は ColorAttachment0/1、深度バッファーの場合は DepthAttachment。
- FBO をバインドします。
- ジオメトリを描画します。
gl_FragData[]
frag シェーダーを使用して、さまざまなアタッチメントにデータを送信します。
この時点で、GLSL を使用して別のパスでデータを取得したいと思います。どのように a) フレームバッファ カラー アタッチメントからデータを取得し、b) 深度コンポーネントからデータを取得しますか。
c++ - GPU での画像処理 - フィルター用の連続シェーダー - FBO
現在、OpenGL 画像処理アルゴリズムを実装しようとしています。
複数のフィルター (Sobel Gaussian など) を実行するために、複数のシェーダーを連続して使用したいと考えています。これを行うには、FBO のおかげでテクスチャにレンダリングする必要があることを理解しました。私はそれについて多くのことを読み、コードを書きました。しかし、私は期待した結果を得ていません。
現時点では、2 つのシェーダーを使用しようとしています。したがって、最初のシェーダーの入力である元の画像があります。次に、シェーダーの出力をテクスチャにレンダリングし、それを 2 番目のシェーダー (ピンポン手法) の入力にします。最後に、2 番目のシェーダーの出力を表示します。
しかし、結果として、元の画像を取得しています。
私のコードは次のとおりです。
誰かが何が悪いのか考えていますか???
c++ - OpenGL:複数のテクスチャを使用してFBOにレンダリング
私はレンダラーを試しています。私が欲しいのは、カラーバッファと通常のバッファを2つの別々のテクスチャに書き込むことです。私はその部分を理解しました。
ただし、カラーバッファは2つのテクスチャの組み合わせであると想定されています。これでうまくいくはずです:
そしてこれはフラグメントシェーダーです:(GLSL)
ただし、2番目のテクスチャは最初のテクスチャと同じです。どちらのテクスチャがアタッチGL_TEXTURE0
されていても、両方のサンプラーに使用されます。
FBOの初期化:
完全なレンダリングセクション:
前もって感謝します。
c++ - Cgを使用してオフスクリーンフレームバッファオブジェクトにレンダリングする例
nVidiaCgを使用してオフスクリーンフレームバッファオブジェクトにレンダリングする例を見てみたいと思います。
私がアクセスできるコンピューターにはグラフィックカードがありますが、モニター(またはXサーバー)はありません。だから私は自分のものをレンダリングしてディスク上の画像として出力したいと思います。グラフィックカードはGTX285です。