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

3d - 後処理でポイント周辺のすべてをぼかす最速の方法

私は Ogre3D を使用しており、それはコンポジターです。

基本的に、ビューポートの動的ポイントの周りのすべてをぼかす最も速い方法は何だろうと思っています。ポイントは 2D スクリーン座標によって与えられます。ピクセルがそのポイントから離れているほど、よりぼやけます。どの程度のぼかしが想定されているかを知るために、ぼかしポイントが画面のちょうど真ん中にある場合は、エッジを最大限にぼかす必要があります。したがって、ピクセルのぼやけ係数は次のように考えることができます。

MIN ( (normalizedDistanceBetween(pixel, blurringPoint)/0.5), 1.0 )

したがって、正しい方法は、最初にシェーダーを使用してシーンの完全にぼかしたバージョンを作成することだと思います。私がすでに持っているその部分。

では、このぼやけた画像を元のシーンとどのようにミックスするのでしょうか? 2 つの方法があります。

  1. オリジナルとぼかしバージョンをコンポジターシェーダーに入力し、距離と上記の式の結果を計算させ、その結果を使用して混合します。
  2. 追加の render-to-texture パスをセットアップします。これは、上記の式を使用して「混合テクスチャ」をレンダリングします。これのポイントは、ミキシング テクスチャが画面よりもはるかに小さくてもよいということです。16x16 であっても、結果に大きな違いはありません。次に、元のシーン、ブラー バージョン、ミキシング テクスチャを最終的なコンポジター シェーダーに入力します。最終的なコンポジター シェーダーは、各ピクセルのミキシング テクスチャから値をサンプリングし、それを使用して 2 つのシーン バージョンをミックスします。

2番目の方法は意味がありますか?最初のものよりも顕著なパフォーマンスの向上がありますか? (数 fps でさえ?) または、追加の RTT パスとテクスチャを作成すると、すべての出力ピクセルに対して (かなり単純な) 距離関数を計算しないことによって得られるすべてのパフォーマンスが軽減されますか? 画面サイズは 1024x768 のような通常のもの、つまり 16x16 のミキシング テクスチャよりもはるかに大きいと想定しています。または、他にもっと簡単な方法はありますか?

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

ios - CCSprite.draw がスレッドの CCRenderTexture で機能しない (iOS cocos2d 2.0 rc2)

CCRenderTextureスレッド内に描画しようとしています。私が持っている:

スレッドの先頭に。以外はすべて機能しましCCSprite.drawた。レンダー テクスチャを次のようにテストしました。

呼び出し[CCSprite visit]てもスプライトは描画されません。 glGetErrorすべてのステップで 0 を返します。

この問題をさらに調査するために、UI スレッドにすべてを配置し、コンテキスト呼び出しを削除しました。同じコードでスプライトが正しく描画されていることがわかります。また、このスプライトをシーンに追加して、スプライトが正しいことも確認しました。

また、スレッドを使用しない場合でも、上記の「コンテキスト設定呼び出し」を配置するとCCSprite.draw、動作が停止しますが、CCRenderTexture. 画面に描画している場合は正常に動作します。

この問題を解決する方法はありますか? 前もって感謝します!

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

opengl - OpenGL はテクスチャを正しく表示します

実際には同じ位置と位置にある 2 つのサーフェスにテクスチャをレンダリングしています。

このような場合、テクスチャを 1 つだけ表示したいのですが、次のようになります。

ここに画像の説明を入力

つまり、最初のマテリアルのテクスチャだけを表示したいのです。

どこで解決策を探すべきか知りたいのですが、材料のブレンドで遊ぶべきですか?

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

android - テクスチャにレンダリング & 軌跡が消えない

ポイント スプライトを使用して花火を実装し、花火を 2 つの異なるテクスチャにレンダリングしてトレイルを描画し、アルファを 1 未満に設定して 1 秒おきに描画し、以前の各描画をますますフェードアウトさせようとしています。

見栄えが良く、以前にレンダリングしたテクスチャを描画するときに使用するアルファに応じて、予想どおり、軌跡が長くなったり短くなったりします。ただし、ほとんどのデバイス (すべてではない) では、軌跡が完全に消えることはありません。それらは、消えるはずだった後、非常に透明ですが、まだ目立つ痕跡を残します。

これは私が現在していることです:

second というブール値に応じて、buff1 と buff2 という 2 つのテクスチャのいずれかにレンダリングするようにフレーム バッファを設定します。

次に、アルファ値 < 1 を使用して、以前に描画したテクスチャを現在のテクスチャにレンダリングします。buff オブジェクトは、テクスチャでクワッドを描画する単なるヘルパーです。draw 関数は、アルファを他のカラー チャネルに事前乗算します。

その後、点スプライト花火の描画を行います。また、あらかじめ乗算されたアルファと gl.glBlendFunc(GL10.GL_ONE, GL10.GL_ONE_MINUS_SRC_ALPHA); を使用します。

最後に、フレーム バッファをリセットし、古いトレイル フェードを含む新しいテクスチャを作成し、現在の花火を 100% アルファで描画します。次に、このテクスチャを使用して、花火テクスチャの前後にある他のすべてのオブジェクトと一緒にシーンに描画します。

私が言ったように、ほとんどすべてが機能していますが、トレイルが消えた後も残っているほとんど透明なトレイルを除いて. 前のバッファを描画するアルファ値が高いほど、永遠に残るトレイル「残り物」がより目立ちます。

私はさまざまなブレンディング モード、事前に乗算されたものと事前に乗算されていないアルファなどを試してきました。

私は何を間違っていますか?これを行うより良い方法はありますか?

助けてくれてありがとう、アンダース

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

android - Android OpenGL ESの3Dオブジェクトの画像テクスチャと色?

3Dオブジェクトに単に色(例:緑)を使用するか、テクスチャ画像ファイル(例:green.pngファイル)をロードする場合、レンダリングのオーバーヘッドに関して違いはありますか?

OpenGL ESは、色付きのオブジェクトに対しても、最終的にテクスチャを作成するべきではありませんか?

私はエミュレーターと一緒にAndroidAPIv8を使用していますが、目標は実際のAndroidフォンです。

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

glsl - GPGPU - 効果的なピンポン技術?

WebGL および GLSL シェーダー プログラミングを使用して、効果的な流体ソルバーを GPU に実装しようとしています。

興味深い記事を見つけました: http://http.developer.nvidia.com/GPUGems/gpugems_ch38.html

参照: 38.3.2 スラブ操作

ピンポンレンダリングで境界条件を適用するこの手法が可能かどうか疑問に思っていますか? 線だけをレンダリングすると、テクスチャの内部はどうなりますか? 入力テクスチャ全体を一時テクスチャにコピーする必要があると常に想定していました (ofc 境界はそのプロセス中に更新されます)。それらはその操作の後に交換されるためです。

これは、例 38-5という事実を考えると特に興味深いことです。Boundary Condition Fragment Program (視覚化: http://i.stack.imgur.com/M4Hih.jpg ) は、IMHO がピンポン技術を必要とするスキームを示しています。

どう思いますか?私は何かを誤解していますか?

一般に、テクスチャの書き込みは非常にコストがかかることがわかったので、何とか制限したいと思います。残念ながら、ピンポン手法では多くのテクスチャ書き込みが必要になります。

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

large-files - Cocos2d-xは非常に大きな画像をロードします

非常に大きな画像(形式はpng)を背景としてゲームにロードする必要があり、ゲームはcocos2d-xで開発されています。問題は、画像をメモリに保持するとメモリスペースがかかりすぎることです。画像を多数に分割して動的にロードすると、画像データをテクスチャにレンダリングするときにフレームレートが非常に低くなります。それで、私が「より少ない記憶」と「流暢」を同時に得ることができる方法はありますか?ありがとう!

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

android - OPENGLを使用してAndroidで別のテクスチャの上にテクスチャを設定する方法

私はパスを2日間探していました。OpenGLを使用してAndroidゲームを開発しています。このゲームでは、2つの画像を同時に表示する必要があり、1つは背景画像で、もう1つは表示されます。条件によって異なります。Open GL Textureプロパティを使用して背景画像を表示しましたが、テクスチャを使用して2番目の画像を表示しようとすると、最初の画像は表示されません。複数のテクスチャを扱っているため、GLTextureクラスを使用してテクスチャを操作しました(http: //tkcodesharing.blogspot.in/2008/05/working-with-textures-in-androids.html)それでも、2つの画像を同時に表示することはできません。

ここにいくつかのコードがあります:

onDrawFrameで

ドローコードで

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

opengl - glOrtho と RenderToTexture

正射投影をテクスチャにレンダリングしたいと考えています。

メッシュのレンダリングはうまく機能していますが、FrameBuffer を追加すると画面が真っ暗のままになります。

FBO を作成します。

オブジェクトをレンダリングします。

テクスチャをレンダリングする:

メインゲームループ:

どこで問題が発生していますか?render to texture を使用しているときに renderWindow がまだ黒いのはなぜですか? テクスチャにレンダリングしなくても、すべて正常に動作します...

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

android - OpenGL ES を使用して円にテクスチャをロードする方法

テクスチャを円にロードする際に問題に直面しています。私のサークルは三角うちわで作っています。それは悪い出力を与えます。

元の画像: 元の画像

結果 : 結果

私のコード:

これで私を助けてください