問題タブ [render-to-texture]
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.
c++ - OpenGL ラッパーのアルファ/テクスチャリングの問題
いくつかの OpenGL 関数のラッパーを作成中です。目標は、後処理シェーダー効果を適用するために、Neverwinter Nights ゲームで使用されるコンテキストをラップすることです。OpenGL を学習し (これは初めて使用する試みです)、DLL とリダイレクトでいろいろ遊んだ後、私はある程度機能するシステムを手に入れました。
ただし、後処理のフルスクリーン クワッドがアクティブな場合、ゲームによって描画されたすべてのテクスチャリングと透明度が失われます。ゲームが独自のレンダリングを完全に終了した後にすべての関数が有効になるため、これは不可能です。
コードはレンダーバッファまたはフレームバッファを使用しません(他のプログラムでサポートされ使用可能であるにもかかわらず、GLEWまたはGLeeの有無にかかわらず、どちらも私のシステムでのコンパイルを拒否しました)。最終的に、バッファからのテクスチャのコピーとフルスクリーン クワッドのレンダリングを処理するために、次のコードをまとめました。
このコードはほぼ完全に機能し、顕著な速度低下はありません。ただし、アクティブな場合 (frameCount 条件を追加して、約 5 秒ごとにオンとオフを切り替えました)、すべてのアルファとテクスチャリングはゲーム レンダラーによって完全に無視されます。この関数の前に、ブレンドやテクスチャリングをオフにすることはありません (OpenGL 呼び出しは、nwshader->thisframe テクスチャを作成するためだけです)。何が起こっているかのスクリーンショットをいくつかキャッチできました。
壊れた A: http://i4.photobucket.com/albums/y145/peachykeen000/outside_brokenA.png
壊れた B: http://i4.photobucket.com/albums/y145/peachykeen000/outside_brokenB.png
(注、B では、奥の煙は壊れていませんが、HUD も正しく透明です。)
壊れた内部: http://i4.photobucket.com/albums/y145/peachykeen000/transparency_broken.png
正しい内部 (比較用): http ://i4.photobucket.com/albums/y145/peachykeen000/transparency_proper.png
クワッドの描画もメニューを壊し、全体を単一の白いボックスを持つ黒い面に変えます. 深さ、ゲームが特定のオブジェクトを描画する方法、または適切にリセットされていない状態の問題であると思われます。フレーム内のすべての呼び出しの完全なログをダンプするために GLintercept を使用しましたが、何も問題はありませんでした (wglSwapLayerBuffers への呼び出しは常に最後です)。
OpenGL を使用するのは初めてなので、何が問題なのか (またはそれを修正する方法) がまったくわかりません。私は何が欠けていますか?
java - Android および OpenGL ES で文字列をテクスチャにレンダリングする
私はどこでもグーグルで検索しましたが、文字列をテクスチャにレンダリングし、そのテクスチャを画面上のクワッドに表示する方法はあまり見つかりません。誰かがプロセスの概要を説明したり、方法を説明する優れたリソースを提供したりできますか? 文字列をテクスチャにレンダリングすることは、Android OpenGL ES アプリでテキストを表示するための最良の方法でもありますか?
編集:さて、LabelMaker はアルファ ブレンディングを妨害するため、テクスチャ (透明な背景を持つ PNG から作成された) は、透明な背景ではなく、黒一色の背景になりました。LabelMaker 関連のコードをすべてコメントアウトすると、問題なく動作します。
更新: 気にしないでください。コードを調べたところ、LabelMaker がラベルの描画後にブレンドを無効にしていることがわかりました。
opengl - JOGLとフレームバッファのテクスチャへのレンダリングに関する問題:無効なフレームバッファ操作エラー
さて、私はシーンを小さな32x32テクスチャにレンダリングしようとしていて、問題が発生しました。実際にテクスチャに何かを描画しようとすると、「無効なフレームバッファ操作」エラーが発生します。以下のコードを簡略化して、クワッドをテクスチャにレンダリングし、そのクワッドを画面にレンダリングされる別のクワッドのテクスチャとしてバインドしようとするようにしました。だから私の質問はこれです...エラーはどこにありますか?これはJOGL1.1.1を使用しています。エラーは、コードのCheckpoint2で発生します。
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 シェーダ レンダリング
更新:Danvil が以下のコメントで解決しました。私のテクスチャ フォーマットは GL_RGBA ではなく GL_RGB でした。これはもちろん、アルファ値が保持されないことを意味します。なぜ気づかなかったのかわからない... ありがとう、ダンヴィル。
GLSL シェーダを使用してテクスチャにレンダリングし、そのテクスチャを入力として 2 番目のシェーダに送信しています。最初のテクスチャでは、RGB チャネルを使用してカラー データを 2 番目の GLSL シェーダに送信していますが、アルファ チャネルを使用して、2 番目のシェーダがプログラムの一部として使用する浮動小数点数を送信したいと考えています。問題は、2 番目のシェーダーでテクスチャを読み取ると、アルファ値が常に 1.0 になることです。これを次の方法でテストしました。
最初のシェーダーの最後に、次のようにしました。
次に、2番目のテクスチャで、次のようなものを使用して最初のテクスチャの値を読み取ります
出力に黒のピクセルはありませんが、上記のコードを読み取りに変更すると
そして2番目のシェーダーで
該当するピクセルはすべて黒です。これは、何らかの理由で、最初のシェーダーでアルファ値を 1.0 以外に設定してテクスチャにレンダリングすると、2 番目のシェーダーでは 1.0 として表示されることを意味します。
テクスチャにレンダリングする前に glDisable(GL_BLEND);
問題は、私が望む方法で青チャネルを使用できるため、私には明らかではない方法でアルファ値を処理する OpenGL に関係していることは明らかであり、そこにいる誰かがすぐに問題に気付くと考えました。 .
また、シェーダー プログラムを呼び出す方法は、クワッドを描画することです (テクスチャを持つフレーム バッファーにレンダリングしています)。
iphone - OpenGLES iPhone で現在のフレームバッファを取得するために glGet に渡すパラメータ
glGet を使用してさまざまなパラメーターを取得することを知っています。現在の GL_FRAMEBUFFER_OES を取得し、GLuint タイプのフレームバッファ ID を取得する方法を知る必要があります。
renderToTexture を使用する必要があります。これにより、通常のフレームバッファに戻すときに、クラスのコードの 1 つが簡単になります。
iphone - glFramebufferTexture2D のパフォーマンス
GPU を使用して大量の計算を行っていますが、これには多くのレンダリングからテクスチャへの操作が含まれます。これは反復的な計算であるため、テクスチャへのレンダリング、そのテクスチャの別のテクスチャへのレンダリング、2 番目のテクスチャの最初のテクスチャへのレンダリング、というように、シェーダーを介して毎回テクスチャを渡します。
私の質問は: レンダリング先のテクスチャごとに個別の FBO を用意する方が良いですか、それとも 1 つの FBO を用意しglFramebufferTexture2D
て、レンダー ターゲットを変更するたびにターゲット テクスチャをバインドする必要がありますか?
私のプラットフォームは、iPhone 上の OpenGL ES 2.0 です。
direct3d - Direct3Dを使用した高度なテキストレンダリング
私の仕事の「戦場」について説明しましょう。
- 100万人以上のユーザーとのマルチルームオーディオ/ビデオチャット。
- カスタムDirect3Dレンダラー;
実装する必要があるのはTextOverVideo機能です。テキスト自体はネットワークを経由し、Direct3Dレンダラーを使用して受信者側でレンダリングされます。AFAIK、これはゲーム開発で一般的に使用され、文字/数字を使用して独自のテクスチャを作成し、このアイテムを描画します。アプリケーションは多くの言語をサポートする必要があるため、標準を使用する必要があります。そのため、私はID3DXFontインターフェイスを使用してきましたが、満たされていない制限がいくつか見つかりました。
私が直面したのは、スケーラビリティの欠如です。たとえば、ユーザーがビデオウィンドウのサイズを変更している場合、その間に新しいD3DXFONT_DESCを使用してD3DXFontを再作成する必要があります。受け入れられないと思います。そのため、(私のスキルのために)私が目にする唯一の解決策は、テキストをテクスチャにレンダリングし、スケーリングや変換などでスプライトを描画することです。
ですから、正しい方向に進んでいるかどうかはわかりません。アドバイス、経験、文献、情報源を手伝ってください...
c++ - GPU での画像処理 - フィルター用の連続シェーダー - FBO
現在、OpenGL 画像処理アルゴリズムを実装しようとしています。
複数のフィルター (Sobel Gaussian など) を実行するために、複数のシェーダーを連続して使用したいと考えています。これを行うには、FBO のおかげでテクスチャにレンダリングする必要があることを理解しました。私はそれについて多くのことを読み、コードを書きました。しかし、私は期待した結果を得ていません。
現時点では、2 つのシェーダーを使用しようとしています。したがって、最初のシェーダーの入力である元の画像があります。次に、シェーダーの出力をテクスチャにレンダリングし、それを 2 番目のシェーダー (ピンポン手法) の入力にします。最後に、2 番目のシェーダーの出力を表示します。
しかし、結果として、元の画像を取得しています。
私のコードは次のとおりです。
誰かが何が悪いのか考えていますか???
optimization - Xna を使用して、1 つのパスでシーンを複数のテクスチャにレンダリングすることは可能ですか?
1 回のパスで複数のレンダー ターゲットにシーンをレンダリングできるかどうか (または、クライアント コードを使用して複数回描画するよりも高速な方法) を考えています。さまざまな寸法 (512 x 512、256 x 256、128 x 128、64 x 64 など) の複数のテクスチャにレンダリングされているコードを最適化したいと考えています。
元のターゲットから派生したミップ マップを使用できることはわかっていますが、色をブレンドしたくありません。ミップ マッピングはいくつかのテクセルから平均を取ると思いますが、私の目的のためには、グラフィックス カードによってレンダリングされる、レタッチされていないレンダリングが必要です。これを可能にするミップマップの設定があれば、それも実現可能な解決策として考えられます。
ちなみに、ミップマップがCPUまたはGPUで生成されるかどうかは誰にもわかりませんか?
読んでくれてありがとう。