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

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

c# - 線を 1x1 RenderTarget2D にレンダリングしても、ターゲットのピクセルの色は変わりません

私が達成しようとしているのは次のことです: 私のパスは、CPU で取得して処理する必要がある、いくつかの一意の数字を何度も繰り返す巨大な配列を返します。

2000x1 テクスチャへのレンダリングを試み、RenderTarget2d.GetData<>() と foreach ループを使用して CPU でサンプリングしました。それはひどく遅かった:)。だから私は自分の問題を回避しました。今のアイデアは、1x1 テクスチャに複数回レンダリングすることです。パスの合間に、シェーダーのパラメーター配列を拡張して、既に返された数値を含めます。各ピクセルは、配列を照会し、既に表示されている数値を保持している場合はそれ自体をクリップします。

現在の問題は、何をレンダリングしてもピクセルの色が変わらないことです。常に乱数が返されます。描画呼び出しの前に追加Game.GraphicsDevice.Clear(Color.Transparent);すると、シェーダー コードは 0.2f (または 0 から 255 に相当) を返す必要がありますが、ゼロが返され始めました。レンダリングするコンテンツが小さすぎて (画面に線を引き、線に沿ってシーンの色をサンプリングしている)、ある時点で lerped が発生する可能性がありますか?

C#/XNA コード:

シェーダー コード:

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

c# - 最小化すると C# XNA 4.0 テクスチャが消える

私は XNA にかなり慣れていないので、いくつかの問題に直面しています。ゲームを最小化すると、再び開くと画面が黒くなります。これは何が原因で、どうすれば解決できるのでしょうか?

これが私の画像クラスです:

編集:

やっと正常に動作するようになりました!

固定コード:

renderTarget のコンテンツは別のメソッドで描画されるようになり、LoadContent()1 回呼び出されDraw()、コンテンツが失われるたびにメソッドで呼び出されます。

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

c# - 異なる drawableComponents XNA の複数の RenderTargets

こんにちはみんな私は少し問題があります。

私はこの 2 DrawableGameComponets(bigApple、smallApple) を両方にRenderTarget持っRenderTargetていますDrawableGameComponent

私が達成したいことは、両方DrawableGameComponentsが適切に重ねて描画されることです。

このようなもの:
これは、両方の drawableComponent があり、各コンポーネントに rendertargets がない画面です。 ここに画像の説明を入力

しかし、その代わりにこれを取得します。
これは、各コンポーネントに rendertargets を持つ drawableComponent の両方を持つ画面です。 ここに画像の説明を入力

これは、私が取り組んでいる小さなゲーム用です。1 つのドローアブル コンポーネントとカメラからの画像を表示し、もう 1 つのドローアブル ゲーム コンポーネントにゲーム自体を表示する予定です。しかしGameComponent、コンポーネント リストに別のコンポーネントを追加すると、最後に追加したコンポーネントの上にあるコンポーネントが表示されなくなります。

これは、各描画可能なコンポーネントからのコードです。

スモールアップル:

-- そして BigApple クラス

クラス DrawableComponent2D は、drawablegameComponent から継承されたもので、操作する変数がいくつかあります。

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

c++ - RenderTargetView <-> テクスチャ

私はこのチュートリアルを見つけました、私はそれに従い、クラスDirectXを作成します

それを実行すると、SwapChain->Present(0,0) を呼び出してもエラーは発生しませんが、renderTargetView は黄色である必要がありますが、何も表示されません。どうして??エラーが見つかりません。

PS このコードで renderTargetView を作成する場合:

すべての作品; 私のコードでは、すべての「結果」値をチェックします。

2°これは私がレンダリングしたいスプライトのコードです:Init()//init頂点バッファ、インデックスバッファ、テクスチャ、マトリックス....レンダリング関数はこれです:

次に、RT1 ​​でスプライト (ボールなど) をレンダリングする必要があります。

RT1 が表示されます (たとえば、青色でクリアした場合、画面上に青色の形状が表示され、移動、拡大縮小、回転できます) が、ボールは表示されません (RT1 でレンダリングしています)。しかし、RT1をrenderTargetViewとして設定せずにボールをレンダリングすると、ボールは正しく表示されます

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

c# - RenderToTarget の XNA セカンド グラフィックス デバイス

複数のスプライトからランダムな島を作成する XNA ゲームを作成しています。それらを別のスレッドで作成し、RenderTarget2D を使用して単一のテクスチャにコンパイルします。

RenderTarget2D を作成するには、グラフィック デバイスが必要です。自動的に作成されたグラフィックス デバイスを使用すると、メイン ゲーム スレッドの描画呼び出しが競合することを除いて、ほとんどの場合問題なく動作します。グラフィックス デバイスで lock() を使用するとちらつきが発生し、それでもテクスチャが正しく作成されないことがあります。

独自のグラフィックス デバイスを作成すると、競合は発生しませんが、島が正しくレンダリングされず、純粋な白黒になります。なぜこれが起こるのか分かりません。基本的に、黒/白の代わりに同じ結果を得ることができる 2 番目のグラフィックス デバイスを作成する方法が必要です。誰でもアイデアはありますか?

TextureBuilder 専用の 2 つ目のグラフィックス デバイスを作成するために使用しているコードは次のとおりです。

島を単一のテクスチャにレンダリングするために使用しているコードは次のとおりです。

これは、透明な背景で何が起こるべきかです(デフォルトのデバイスを使用すると通常そうなります) http://i110.photobucket.com/albums/n81/taumonkey/GoodIsland.png

これは、デフォルトのデバイスが競合し、メイン スレッドが Clear() を呼び出すことができた場合に発生します (それもロックされているにもかかわらず)。

自分のグラフィック デバイス http://i110.photobucket.com/albums/n81/taumonkey/BadIsland.pngを使用すると、次のようになります。

提供されたヘルプに事前に感謝します!

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

xna - renderTarget を使用して画像の色を変更する

レンダー ターゲットを使用して画面に画像を描画しようとしています。私はこのコードを使用しました:

しかし、結果の画像は常に黒です!この画像の色を変えるのを手伝ってくれませんか。ありがとう。

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

c# - アルファシャネルを使用したxna 4レンダーターゲット

私は簡単なことをしたいと思います: アルファ シャネル ブレンディングを使用して、2D テクスチャを 2D レンダー ターゲットにレンダリングします。

だから私は自分のレンダーターガーを作成します:

次に、テクスチャを作成します。

次に、レンダー ターゲットを白くクリアし、レンダー ターゲットにテクスチャを 2 回描画します。適切なスケールで、色とアルファ シャネルの乗法演算を使用します。

このレンダー ターゲットを画面上に描画します。背景は緑色で、レンダーステートは nonPremultiplied で、テクスチャのアルファ値が透明度として適用されます。

結果は期待どおりです:

  • レンダー ターゲットで、1 つのテクスチャのみに属するピクセルの場合:

    • 赤のシャネル = テクスチャの赤のシャネル (1) * レンダー ターゲットの赤のシャネル (1) = 1
    • 緑と青のシャネル = テクスチャ シャネル (0) * レンダー ターゲット シャネル = 0
    • アルファ シャネル = テクスチャ アルファ (0.5) * レンダー ターゲット アルファ (1) = 0.5
    • 緑の背景の上に描画されたこのテクスチャは、アルファ透明度が 0.5 (1/2 赤 + 1/2 緑) に設定されているため、茶色になります。
  • レンダー ターゲット内、オーバーラップ ピクセル用 (上記の計算が 2 回適用される)

    • 赤のシャネル = テクスチャの赤のシャネル (1) * テクスチャの赤のシャネル (1) * レンダー ターゲットの赤のシャネル (1) = 1
    • 緑と青のシャネル = テクスチャ シャネル (0) * テクスチャ シャネル (0) * レンダー ターゲット シャネル = 0
    • アルファ シャネル = テクスチャ アルファ (0.5) * テクスチャ アルファ (0.5) * レンダー ターゲット アルファ (1) = 0.25
    • 緑の背景の上に描画されたこのテクスチャは、アルファ値 0.25 (1/4 赤 + 3/4 緑) のおかげでほぼ緑の色になります。

ここで、renderstate を変更して、テクスチャのアルファ シャネルを適用し、色の乗算を行わないようにすると、次のようになります。

私が得るべきものは:

  • レンダー ターゲットで、1 つのテクスチャのみに属するピクセルの場合:

    • 赤のシャネル = 0 * テクスチャの赤のシャネル (1) + 1 * レンダー ターゲットの赤のシャネル (1) = 1
    • 緑と青のシャネル = 0 * テクスチャ シャネル (0) + 1 * レンダー ターゲット シャネル (1) = 1
    • アルファ シャネル = テクスチャ アルファ (0.5) * レンダー ターゲット アルファ (1) = 0.5
    • 緑色の背景の上に描画されたこのテクスチャは、明るい緑色 (1/2 白 + 1/2 緑) になります。
  • レンダー ターゲット内、オーバーラップ ピクセル用 (上記の計算が 2 回適用される)

    • 赤いシャネル = 1
    • 緑と青のシャネル = 1
    • アルファ シャネル = テクスチャ アルファ (0.5) * テクスチャ アルファ (0.5) * レンダー ターゲット アルファ (1) = 0.25
    • 緑の背景の上に描画されたこのテクスチャは、より強い緑になります (0.25 * 白 + 0.75 * 緑)。

そして、私が得るのは無地の白いテクスチャです...

色をブレンドしないとレンダー ターゲットのアルファ ブレンディング計算が機能しなくなるのはなぜですか? 私の目標は、テクスチャの色を取得せずに、アルファ シャネルの計算のみを行うことです。どうやってやるの ?

ありがとう

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

c# - XNA で null 以外のレンダー ターゲットにレンダリングすると、アンチエイリアシングが無効になる

3D モデルを rendertarget2D にレンダリングしてから、スプライト バッチを使用して画面に描画します。次の行を使用して、コンストラクターでアンチエイリアシングを有効にしました。

モデルをバックバッファに直接レンダリングすると、アンチエイリアシングが期待どおりに機能しました。rendertarget2D にレンダリングするようになったので、アンチエイリアシングが機能しなくなり、エッジがぎざぎざになります。(rendertarget2D のサイズ変更や回転は行っていません。)

この謎を説明してもらえますか?

コード:

Board は DrawableModel クラスであり、モデルと、モデルを画面に単純に描画するメソッド DrawMe(Camera camera) を含みます。Camera は、射影行列とビュー行列、カメラの位置とターゲット位置を含む単純なクラスです。

アップデート:

DrawMe メソッドの機能は次のとおりです。

更新 2:

メインの XNA ファイルの残りの関数は次のとおりです (Update と UnloadContent はまだ変更されていません)。