問題タブ [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.
opengl - OpenGL : OpenGL を設定して、FBO にレンダリングするだけで、画面/ウィンドウ/コントロールに出力しないようにする方法は?
まず、WPF アプリケーションで OpenTK を使用していますが、これはより一般的な OpenGL のものだと思います。
私のアプリケーションでは、3D のものをテクスチャにレンダリングできるようにしたいと考えています。画面上のウィンドウやコントロールへの出力は必要ありません。バックグラウンド テクスチャにレンダリングしたいだけです。
では、それを行うには OpenGL をどのように設定すればよいですか? 通常、graphicscontext は devicecontext をパラメーターとして作成する必要があります。しかし、私の場合、デバイスコンテキストに出力したくありません。また、ウィンドウやディスプレイに関係のない設定 (fe 1024x1024、32bpp、32 ビット ZBuffer) で固定サイズの FrameBufferObject にレンダリングしたいと考えています。
誰でもこのようなセットアップの経験があることを願っています:)
multithreading - OpenGL / OpenTK : OpenGL コントロールのバックグラウンド スレッドでレンダリングされた FBO を表示します。
私は OpenTK 経由で OpenGL を使用しており、バックグラウンド スレッドで FramebufferObject にレンダリングしています。レンダリングされた各フレームの後、UI の 1 つ以上の OpenGL コントロールに FBO (の一部) を表示したいと考えています。
それはどのように機能しますか?
opengl - デフォルトのレンダバッファを FBO にアタッチすることはできますか?
レンダリング コードの大部分をリファクタリングすることを検討していますが、1 つの疑問が頭に浮かびました: フレーム バッファ オブジェクトで複数の色のアタッチメントを使用して、画面とテクスチャの両方にレンダリングすることは可能ですか? 多くの有用なアプリケーションがあるにもかかわらず、これが可能かどうかについての情報は見つかりません。私のテクスチャをカラーのアタッチメント 0 とレンダーバッファ 0 としてアタッチメント 1 にバインドするだけで十分だと思いますか?
たとえば、3D モデルに「描画」できるインタラクティブなアプリケーションを作成したいと考えています。UV 座標をテクスチャにレンダリングすることで、ユーザーが描画する場所を解決します。これにより、テクスチャを変更する場所のマウス座標を調べることができます。私の場合、UV をテクスチャに描画し、実際のテクスチャを画面に 1 つのパスで描画するシェーダーを使用するのが最も高速です。
これを行うためのより良い方法はありますか、それとも正しい軌道に乗っていますか?
c++ - Framebuffer を使用したテクスチャのスケーリング
私の目標は、テクスチャが読み込まれるときにテクスチャをスケーリングできるようにすることです。そのため、スプライトがレンダリングされるすべてのフレームで行う必要はありません。最適な方法は、スケーリングされたテクスチャを別のテクスチャにレンダリングし、基本的にキャッシュすることだと考えました。ただし、次のコードでは、(glClearColor により) 赤いクワッドしか得られないため、新しいテクスチャをレンダリングする方法ではなく、FBO が機能していることがわかります。
c++ - テクスチャを分離するFBO
1回のレンダリングパスで深度とカラーバッファを2つの別々のテクスチャでレンダリングするようにFBOを設定するにはどうすればよいですか?
opengl - 通常のバックバッファ+OpenGL(FBO)での深度テクスチャへのレンダリング
状況は次のとおりです。いくつかの深度値を含むテクスチャがあります。そのテクスチャを深度バッファとして使用してジオメトリをレンダリングしたいのですが、色を通常のフレームバッファ(つまり、ウィンドウのフレームバッファ)に書き込んでもらいたいのです。
どうすればよいですか?FBOを作成し、それにデプステクスチャ(GL_DEPTH_COMPONENT)のみをバインドしようとしましたが、機能しませんでした。どの色も現れませんでした。
opengl - FBOを介してRendertoTargetを使用する場合、MipMapの再生成は必要ですか?
ミップマッピングが望ましいと仮定します。
glGenerateMipmapEXT(GL_TEXTURE_2D);を呼び出します。FBOに最初にレンダリングターゲットを割り当てたとき。すべてのミップマップレベルを正しく設定するために、レンダリングが完了したときにこれを再度呼び出す必要がありますか、それとも後続のレンダリング呼び出しですべてのレベルに同時にレンダリングしますか?
最小フィルター(GL_LINEAR_MIPMAP_LINEAR)が作動したときに、オブジェクトの1つが<0,0,0,0>にフェードしている例があります。これは、レンダリング後に再ミップマップしないことが原因であると想定しています。
いくつかの例を調べたところ、後続のglGenerateMipmap呼び出しが行われるものがいくつか見つかりましたが、そうでない場合はさらに多くなります。
意見?
iphone - 2 つのテクスチャを 1 つまたは 2 つの FBO にバインドする方が高速ですか?
複数のシェーダーを次々に実行したい (主に画像処理)。1 つの出力が次の入力になります。必要なすべてのテクスチャにバインドされた FBO を 1 つだけ使用するとパフォーマンスが向上するのでしょうか、それともテクスチャごとに 1 つの FBO を作成しても同じでしょうか?
重要な場合、対象となるプラットフォームは iPhone であり、したがって OpenGL ES 2.0 を使用します。
ありがとう
buffer - Borland C++ Builder 6 でのフレーム バッファー オブジェクト (FBO) の使用
フレーム バッファ オブジェクト (FBO) のコマンド glGenFramebuffersEXT に「アクセス違反」があります。
FBO に関するヘルプ スレッドを見つけて、 glext.h の初期化に問題がないことを確認し、プリプロセッサ行の中で次のように繰り返しました。
⇒アクセス違反が残っています。
GT9800 Nvidia カードを持っているため、別のヘルプ スレッドで NVIDIA OpenGL SDK をダウンロードするように誘導されました。「アクセス違反」は削除されませんでした。
Borland Builder 6 で GLee と Glew を使用してみました:
Borland に Glew を含めるには、まず Visual Studio の「coff」lib を coff から borland ビルダーの「omf」lib に変換する必要があります。
しかし、borland コマンド スクリプト「coff2omf.exe」を使用すると、「無効なマシン タイプ」というエラー ラベルが表示されます。「objconv.exe」を使用すると、「インポート ライブラリをスタティック ライブラリに変換できません」というエラーが表示されます。
=> Glew の「coff」ライブラリを Borland Builder 形式の「omf」に変換する方法を知っている人はいますか?
=> 「インポート ライブラリ」を「静的ライブラリ」に変換するにはどうすればよいですか?
c++ - openGL / GLSL: ブルーム/ブラー、FBO へのレンダリング
私は自分で解決できないように見える別の行き詰まりに達しました。誰かが私を助けてくれることを本当に願っています。
私は GLSL を使用して素敵な小さなブルーム効果を作成しようとしてきましたが、これは非常にうまく機能しました。動くものをシーンに含めようとしたときに、FBO をレンダリングする前に FBO をクリアするのを忘れていたことに気付きました。
私はいつも同じテクスチャを使用していたので、クリアしなくてもシーンが変わることはありませんでした。glClear(); で コマンドは引き続き機能しますが、最初のフレームのみで、その後は黒い画面しか表示されません。したがって、私の問題は、フレームごとに FBO を継続的に更新できないことだと思います。
非常に明白な何かを見逃しているか、ひどく間違ったことをしているように感じます。
ご提案がありましたら、よろしくお願いいたします。
最初のフレームで得られるものは次のとおりです。
ソース: (openFrameworks を使用)
設定:
描く:
FBO:
アップデート:
少なくとも glClearColor のアルファ値は、私の問題の一部のようです。
私はそれをいじってみましたが、私が得たのはこれです:
どういうわけか、途中ですべての色を失っているようです。奇妙なことに、4 つの FBO で (0, 0, 0, 0)、そのうちの 1 つで (0, 0, 0, 1) という最高の結果が得られました。すべての FBO に (0, 0, 0, 0) を設定すると、灰色がかった画像が生成されます (これは、何も入っていないデフォルトのウィンドウであると想定しています)。
これが私の「ブレンドシェーダー」です。
推測はありますか?