問題タブ [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.

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

opengl - GLSL texelFetchOffsetはisampler2Dで機能しますが、usampler2Dでは機能しませんか?

フラグメントシェーダーでは、以下が正常にコンパイルされます。

ただし、以下はコンパイルされません。

OpenGL 4.2ドライバーは、次のコンパイラエラーメッセージを表示します。

エラーC1115:互換性のあるオーバーロードされた関数 "texelFetchOffset(usampler2D、uvec2、int、uvec2)が見つかりません

これは、Quadro5010M用のNvidiaのLinuxドライバー290.*ですが、(初心者の)間違いを犯して、ここで何とか仕様を作成していなかったのではないかと思います。

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

caching - CCTextureCache テクスチャ データを更新する

私のギャラリー アプリでは、頻繁に画像を非同期で読み込みます。画像は、ファイル名で参照される CCTextureCache にダンプされます。addImageAsync問題は、テクスチャをマスクする必要があるということです。このマスキングは、実際には 1 回だけ行う必要があるため、理想的には、呼び出すセレクターに配置するのが最適な場所であると考えました。特定のテクスチャが既にマスクされているかどうかを通知するブール変数を追加して、CCTexture を変更する必要がありましたが、これは非常にうまく機能します。

実際、マスキング コード自体 (Ray のマスキング チュートリアルに従って CCRenderTexture を使用して実行されます) も、セレクター コード内で適切に機能します。私が今抱えている問題は、マスク ロジックを適用すると、CCRenderTexture.sprite.texture があり、この更新されたマスクされたテクスチャで CCTextureCache を更新する必要があるため、将来、他のスプライトまたはそれを呼び出すことができます。指定されたファイル名を参照すると、完全に準備されたテクスチャが使用されます。

CCTextureCache のテクスチャ データを更新するにはどうすればよいですか? より具体的には、既存のキャッシュされたテクスチャをレンダー テクスチャに保存されているテクスチャに置き換えるにはどうすればよいですか?

テクスチャ自体 (それらのデータ) は実際には OpenGL に格納されており、Cocos2D クラス内には格納されていません。したがって、キャッシュされたテクスチャの名前 (GLuint) を持つ OpenGL テクスチャを削除し、キャッシュされたテクスチャの名前 (GLuint) を RenderTexture の sprite.texture の名前に設定するという行に沿って何かを想像します... しかし、私は '実際にそれを達成する方法について途方に暮れています (opengl コード、cocos2d スレッドセーフ コード、cctexturecache の辞書の変更など)。

または、Cocos2D を変更せずにそれを実行する簡単な方法があるかもしれません (たとえば、opengl を使用して、テクスチャ キャッシュによって参照されるテクスチャをレンダー テクスチャのテクスチャに置き換え、ローカル RT 変数を停止させて自動的にクリーンアップしますか?

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

android - GL11ExtensionPack での ClassCaseException。OpenGL android でのテクスチャへのレンダリング

テクスチャにレンダリングしようとしています (これよりも簡単だと本当に思っていました!)

私はこのリソースを見つけました:これはまさに私が欲しいもののようです

ただし、GL11ExtensionPack gl11ep = (GL11ExtensionPack) gl; で ClassCastException が発生します。

誰でも理由を教えてもらえますか?

削除することで問題が修正されました setDebugFlags(GLSurfaceView.DEBUG_LOG_GL_CALLS);

ただし、テクスチャはまだ変更されていません。コードを変更して、緑色をクリアするだけで、テクスチャがすべて緑色になるようにしました。これが createFrameBuffer メソッドです。私はこれで起こっていることすべてを本当に理解していません:/

}

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

java - テクスチャへのレンダリングの問題 - スケーリングの問題(?)

テクスチャへのレンダリングを機能させようとしています。これまでのところ、テクスチャとすべてを描画するために必要なすべての GL ガビンを実行します。唯一の問題は、スケーリングがすべてオフになることです。

ビューポートをテクスチャのサイズに設定し、gluOrtho2d (テクスチャに描画する方法) を -halfwidth, halfwidth, -halfheight, halfheight に設定したいと考えました。これは、描画位置 0,0 が中央にある必要があることを意味します。半幅、半高の位置は右上隅などにある必要があります。

しかし、私は本当に奇妙な効果を得ています.正しいスケールでテクスチャに描画していないようです.

ありがとう

画像:

これはテクスチャ レンダリング前のゲームです。

画像1

これは、画像 1 に示すように、「アリーナ」背景テクスチャに「血しぶき」(現在は豚!) がレンダリングされた後です。元のテクスチャが小さすぎて中央 (数ピクセル) と豚「blood splat」はジグザグにジャンプし、テクスチャーの中心をめくって小さくなっていきます...

画像2

(申し訳ありませんが、投稿に画像を投稿するのに十分な担当者がいません!)

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

opengl - Cgを使用したOpenGLの複数のレンダリングターゲット

私は(無駄に)OpenGLとNVIDIAのCgシェーダーシステムを使用してMRTをセットアップしようとしていますが、最終的な目標は遅延レンダリングです。単一のターゲットに対してシェーダーとRenderToTextureの両方を正常に機能させることができましたが、オブジェクトを複数のレンダリングターゲットにレンダリングしようとすると、いずれのターゲットにも表示されません。

フレームバッファオブジェクトを次のように設定しています。

私のシェーダー(によって返されるプロファイルを使用してコンパイルされますcgGLGetLatestProfile)は次のとおりです。

なぜこれが失敗するのかについて誰かが何か手がかりを持っていますか?

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

java - OpenGLレンダリングからテクスチャ座標へ

テクスチャ(シェーダー、フォント用)にレンダリングできるようにしたいのですが、クワッドを適切に配置するのに問題があります(フレームバッファー自体が適切に機能します)。結果として得られる(コピーされた)テクスチャは、ほとんどの場合、左上のコーダーを示し、残りはトリミングされます。これは、長方形のテクスチャの場合はさらに悪く、正方形のテクスチャの場合はほとんど効果がありません(したがって、この動作を何日も認識していません)

コード例:

画像の例:

ここに画像の説明を入力してください

アッパーは、コピーされたバージョンの下に、レンダリングされた元の画像です。

私は何が間違っているのですか?


更新:テクスチャがダウンサンプリングされているようです

ここに画像の説明を入力してください

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

android - Android で OpenGL ES 2.0 を使用すると、テクスチャへのフレームバッファ FBO レンダリングが非常に遅くなります。なぜですか?

opengl es 2.0 を使用して Android 2D ゲームをプログラミングしています。スプライトをバック バッファに描画した後、ライトを FBO に描画し、それを再びバック バッファにブレンドしようとします。FBO をフレームバッファに描画すると、色がなくても透過的であり、Samsung Galaxy w でフレームレートが 60 から 30 に低下します (GPU としてアドレノ 205 を使用)。シーンに単一のスプライトを描画し、透明な FBO テクスチャを画面にブレンドしても、フレームレートが低下します。その電話で照明効果のある他のゲームを試してみましたが、それらは問題なく動作します。その電話ではほとんどすべてのゲームが問題なく動作します。フレームバッファも使用していると思います。Galaxy SII (mali 400 gpu) では正常に動作します。私は opengl にまったく慣れていないので、どこかで間違いを犯していると思います。コードを共有します。

サーフェスの作成時にこれを 1 回行います。正しいかどうかはわかりません。必要なときに切り替えるために、テクスチャとフレームバッファの ID を保持しています。私の描画コード:

すべてが画面に正しくレンダリングされますが、FBO テクスチャを描画するとパフォーマンスが低下します。ご助力ありがとうございます。私はこれに一生懸命取り組みましたが、解決策が見つかりませんでした。

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

c++ - render-to-texture を使用したマルチパス シェーディング

OpenSceneGraph を使用してマルチパス レンダリング メソッドを実装しようとしています。ただし、私の問題が理論的なものなのか、OSG の応用知識が不足しているためなのか、完全にはわかりません。これまでのところ、正射影を使用してテクスチャにレンダリングすることでマルチパス シェーディングをうまく実装できましたが、透視投影を機能させることはできないようです。

マルチパス シェーディングの実装方法がよくわかっていない可能性があります。もちろん、マルチパス シェーダーを使用してシーン全体をテクスチャにプリレンダリングしてから、最終レンダリングでそのテクスチャを使用する必要があります。ただし、シーン内のオブジェクトごとに個別のテクスチャを作成することについて話しているのではなく、事前にレンダリングされたシーン全体のスクリーンショットを効果的にキャプチャすることについて話しているのではありません。次に、そのテクスチャだけから、レンダリングされた効果を個々のジオメトリに適用します。

これは、頂点シェーダーのジオメトリごとに頂点座標の追加の変換を行う必要があることを意味すると思います。つまり、計算後:

頂点を正しくマッピングするには、さらに一歩進んで頂点のスクリーン座標を計算する必要があります (テクスチャがシーンのスクリーン ショット全体で構成されている場合)。

私が正しければ、直交ビューではなく、最終レンダリングで使用されるビューと同じパース ビューでシーンを事前レンダリングできるはずです。これは私が問題を抱えているところです。直交ビューを希望どおりに作成できますが、透視ビューは作成できません。

私のアプローチは正しいですか?私が想像できる唯一の他のアプローチは、すべてを画面いっぱいのクワッドにレンダリングすることです(実際には、画面座標に変換するのと同じことです)が、それはプリレンダリング段階で透視投影を使用する必要性を軽減しません.

考え?リンク??

編集:成功した試みでは、フラグメントシェーダーのみを使用したことも指摘する必要があります。透視投影は機能しましたが、もちろん、私が使用していた画面に合わせたクワッドは、中央ではなくオフセットされていました。パススルー頂点シェーダーを追加したところ、すべてが空白になりました。

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

android - (すでにレンダリングされた)画面の一部をテクスチャとして取得する

私は android opengl es 2d アプリを作成しており、レンダリングされた画面の一部をビルボードのテクスチャとして使用しようとしています。これまでのところ、glCopyTexSubImage で部分的に成功しました。これは一部の電話でのみ機能します。

私が読んだどこでも、frameBufferObjectを使用してテクスチャにレンダリングすることをお勧めしていますが、その使用方法を理解できないので、誰かがこれを手に入れるのを手伝ってくれるなら、私は彼らに大いに感謝します.

  1. テクスチャにバインドされた FBO を使用する場合、画面の一部だけをレンダリングすることはできますか? そうでなければ、それは少しやり過ぎではありませんか?(また、テクスチャ マッピングとテクスチャの移動の作業がはるかに多くなります。それと、テクスチャは、ぼやけないようにする必要がある部分に対して十分な大きさである必要があります)

  2. とにかく画面にレンダリングする必要があるもののスナップショットを取得する必要があります。それは、フレームごとに 2 回シーンをレンダリングする必要があるということですか (1 つはテクスチャ用、もう 1 つは実際のレンダリング用)。私はここで何かを逃していますか?

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

hlsl - ぼかしへの HLSL 複数パス (RTT?)

複雑な水シェーダーを構築しようとしています (インターネットの例から水シェーダーを入手しました)。今、私はいくつかの機能を追加したいと思います。ぼかした水にパターン グリッドをブレンドします。水とぼかしは機能しますが、ランダム化を使用してぼかし効果を構築しようとすると...シェーダーの多くの命令を使用します... :(

既存の「地面」テクスチャがないため、「hlsl 複数パス」、「hlsl テクスチャへのレンダリング」、「テクスチャなしの hlsl 複数パス」などのトピックを検索しました。

私は法線マップと環境マップから水を構築しました.今...最初のパスから2番目のパスへのこの「マップ全体/テクスチャ/シェーダーデータ」を取得することは可能ですか? 両方のパスのみを実行すると、最初のパスの色が完全に上書きされます:(

皆さんが私の問題を理解し、必要なすべての情報を入手できることを願っています。

助けていただければ幸いです。

ありがとう...