問題タブ [rendertarget]
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キューブマップテクスチャの1つの面にレンダリングするにはどうすればよいですか?
キューブマップのレンダリングターゲットクラスを作成しています。私はすでに正常に動作する2Dを持っています。しかし、このキューブマップレンダリングターゲットクラスでは、必要に応じて特定の面にレンダリングできるようにしたいと思います。「X+」面に円をレンダリングしたいのですが、「Y+」面に三角形をレンダリングしたいのかもしれません。
これは私のクラスがどのように見えるかです
これは私の作成関数がどのように見えるかです
これは私のバインド関数がどのように見えるかです
//これは私のバインド解除関数がどのように見えるかです
私はこの1週間、たくさんの調査を行いました。キューブマップ全体をバインドする代わりに、キューブマップの1つの面だけをバインドする方法を見つけることができないようです。これが私の全体的な目標です。DirectXでは、6つの面を取得して手動で処理するだけでよいことは知っていますが、openGLキューブマップで各面を手動で処理するにはどうすればよいですか?
c++ - テクスチャにレンダリングするときの DX11 アルファ ブレンディング
最終編集:
解決済み...アルファブレンディングがどのように機能するかを詳しく学ぶ必要がありました。私が持っていたはずです: oBlendStateDesc.RenderTarget[a].DestBlendAlpha = D3D11_BLEND_ZERO; ...アルファを維持するには、D3D11_BLEND_ONE に設定します。
一度バックバッファにレンダリングすると、色が正常にブレンドされ、それが最終出力になるため、問題は認識されません。テクスチャにレンダリングするときも同じことが当てはまります。テクスチャをバックバッファにレンダリングすると、正しくないアルファがテクスチャをバックバッファに誤ってブレンドする役割を果たします。
その後、アルファが減少しているように見える別の問題に遭遇しました。これは、たとえば、色が 2 回ブレンドされているためです...
テクスチャにレンダリング...
今...
バックバッファにレンダリング...
これを解決するには、テクスチャをバックバッファーにレンダリングするときに同じブレンド状態を使用しますが、SrcBlend を D3D11_BLEND_ONE に変更して、色が 2 回ブレンドされないようにします。
うまくいけば、これは同様の問題を抱えている他の誰かに役立ちます....
編集終了
パフォーマンスを向上させるために、テクスチャに変化しないテキストの文字列をレンダリングして、毎回個々の文字のレンダリングを節約しようとしています。
私は厳密に 2D でレンダリングしているので、アルファ ブレンディングを有効にしながら深度とステンシルのテストを無効にしました。
問題は、アルファ ブレンディングが発生していないように見えることです。最後に描画されたものは、現在のピクセルを独自のデータで上書きします...ブレンディングはありません。
変わらないシングルブレンド状態を使用しています。バックバッファにレンダリングすると、ブレンディングは正常に機能します。最終的なテクスチャをバックバッファにレンダリングするとき、ブレンディングも正常に機能します。ブレンドが失敗したように見えるのは、テクスチャにレンダリングしたときだけです。
単一のブレンド状態を設定する方法は次のとおりです。
テクスチャにレンダリングする際にブレンドを有効にするために欠けている追加の手順はありますか?
編集: AlphaToCoverageEnable を true に設定すると、ブレンドされますが、ひどく見えます。少なくとも、同じブレンド状態を使用していることを確認します...バックバッファまたはテクスチャにレンダリングするタイミングに応じて、動作が異なります:/これが私のテクスチャの説明です...
編集:ここにいくつかの視覚化があります...
- バックバッファへのレンダリング - AlphaBlending が有効になっています。
- テクスチャへのレンダリング - AlphaBlending が有効になっています。
- バックバッファへのレンダリング - AlphaBlending が無効になっています。
- フォント ファイルから取得した文字 T
*AB を無効にしてレンダリングすると、文字が完全に一致します (4 と 3 を比較)
*AB を有効にしてバックバッファにレンダリングすると、文字はわずかに (ほとんど目立たない) 色あせてレンダリングされますが、それでもブレンドされます (4 と 1 を比較)
*AB を有効にしてテクスチャにレンダリングすると、まったくブレンドされずに、文字がさらに著しく色あせてレンダリングされます。(4 と 2 を比較)
アルファ ブレンディングを有効にすると色が白っぽくなる理由はわかりませんが、手がかりになるのではないでしょうか?
編集: レンダー ターゲット テクスチャをクリアすると... 0.0f、0.0f、1.0f、1.0f (RGBA、青)... これが結果です:
アルファ > 0.0f & < 1.0f のピクセルのみが色とブレンドされます。別の手がかりですが、この問題を解決する方法がわかりません...
xna - RenderTarget2DをスケーリングしてもSourceRectanglesはスケーリングされません
XNAで2Dmatch3ゲームを開発しています。コアロジックとアニメーションが実行されます。RenderTarget2Dを使用してボード全体を描画します。ボードには8行8列で、64x64のテクスチャ(タイル)があり、クリックして移動できます。マウスの交点をキャプチャするには、タイルごとにSourceRectanglesを使用します。もちろん、SourceRectanglesのサイズはテクスチャと同じ64x64です。
RenderTarget2Dを使用してボード全体を縮小し、さまざまなモニターの解像度とアスペクトをサポートしたいと思います。まず、RenderTarget2Dですべてのタイルを描画します。次に、float係数を使用してRenderTarget2Dをスケールダウンします。最後に、画面にRenderTarget2Dを描画します。その結果、ボード全体が適切に縮小されます(たとえば、すべてのテクスチャが64x64から50x50に縮小されます)が、SourceRectaglesは縮小されず、64x64のままであり、マウスの交差は適切なタイルにキャプチャされません。
RenderTarget2Dをスケーリングしてもこれが処理されないのはなぜですか?どうすればこの問題を解決できますか?
windows-phone-7 - XNA でサイズ変更されたテクスチャを読み込む
私は Windows Phone XNA 向けに開発を行っており、完全なイメージが必要ない場合にメモリへの影響を減らすために、より小さいサイズのテクスチャをロードしたいと考えています。
私の現在の解決策は、rendertarget を使用して描画し、その rendertarget を使用する小さなテクスチャとして返すことです。
これは、テクスチャのサイズが変更されるという点で機能しますが、メモリ使用量から、テクスチャ「texLoaded」が解放されないように見えます。コメント化されていない Dispose メソッドを使用すると、SpriteBatch.End() は破棄された例外をスローします。
メモリ使用量を減らすためにサイズ変更されたテクスチャをロードする他の方法はありますか?
c# - Windows Phone の XNA RenderTarget2D
Windows Phone 7 XNA アプリケーションで RenderTarget2D を使用したいと考えています。ただし、描画をレンダー ターゲットに切り替えてから ( SetRenderTarget(null) を使用して) 元に戻すと、画面全体が青色で描画され、レンダー ターゲットに切り替える前に描画されたものはすべて上書きされるため、うまくいきません。これが予想される動作かどうかはわかりません。
実際、この動作を再現するのは非常に簡単です。Windows Phone 7 用の必要最小限の XNA ゲームを作成し、次のコードを使用するだけです。
次のようにレンダー ターゲットを作成しています。
したがって、私は何を間違っていますか?
ありがとう。
xna - SetRenderTarget を呼び出す場所
SpriteBatch.Begin
RenderTargets をとの間で変更したいと思いSpriteBatch.End
ます。私はすでにこれが機能することを知っています:
しかし、私は本当にこれを機能させたいです:
誰かがこれをしているのを見たことがありますが、その理由はわかりませんでした。
編集:なぜ私がこれをやりたいのかについてもう少し:
私のプロジェクトでは、SpriteSortMode.Immediate (必要に応じて BlendState を変更できるようにするため) を使用し、並べ替えられたスプライトのリストを単純に反復処理して、それらすべてを描画します。しかし今、いくつかのスプライトにマルチパスシェーダーを適用したいのですが、すべてではありません! 私はシェーダーにはまったく慣れていませんが、私が理解したことから、最初のパスを使用して中間スプライトにスプライトを描画し、2 番目のパスを使用して最終レンダー ターゲットに中間スプライトを描画する必要があります。(ガウスぼかしピクセルシェーダーを使用しています)。そのため、新しい開始/終了を作成することなく、目的のシェーダーを使用して、目的のターゲットに描画したいと考えています。
c# - XNA のスケールとレンダー ターゲット
Windows 用のトップダウン ストラテジー/RPG/タワー ディフェンス XNA ゲームに取り組んでおり、スケーリング中に問題が発生しました。
私の表示モードは 1680 X 1050 で、PreferredBackBuffer の幅と高さをこれに設定しています。
私が見つけたのは、カメラオブジェクトを使用してズームインおよびズームアウトすると(SpriteBatch.Beginメソッドに渡されるマトリックスのスケールを変更すると、スプライトのスケールが変更される...しかし、私はまだBackBuffer (0,0,1680,1050) に限定されます...
RenderTarget のようなものを使用して、「マップ」をズーム/パンするときにアクセスできる実際の領域を拡張できますか?
私はそれを5000 X 3125のようなものにすることを検討しています...
これにどのようにアプローチすべきかについての考え/例はありますか?
私が経験していることのビデオを追加しました... http://www.youtube.com/watch?v=jIiAeXbAnec
記録のために、この質問もStack Exchange - Game Developmentに投稿しました。