問題タブ [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.
c# - RenderTarget を変更するとパープル スクリーンになりますか?
実行時に RenderTargets を変更しようとしているので、実行時にいくつかの要素を描画し、それらを操作して、最後にテクスチャを画面に描画できます。問題は、実行時に RenderTarget を変更すると画面が紫色になることです。Drawで取得したコードは次のとおりです。
実行時に RenderTarget を作成する方法は問題ではないようです (実行時にインメモリ テクスチャを作成し、SpriteBatch で描画する必要があります) と、完全に紫色の画面になります。これを修正するにはどうすればよいですか?
directx - Direct3D:IDirect3DSurface9(デフォルトプール)からシステムメモリビットマップを取得する効率的な方法?
私はIDirect3DSurface9、デフォルトプール、YUVフォーマットを持っています。どうすれば効率的にビットマップビットを取得できますか?現時点では私は:
- レンダリングターゲットを作成します。
device->CreateRenderTarget(surf_desc.Width, surf_desc.Height, D3DFMT_A8R8G8B8, D3DMULTISAMPLE_NONE, 0, TRUE, &render_target, NULL)
- YUVをRGB32に変換:(
device->StretchRect(videomem_surf, NULL, render_target_, NULL, D3DTEXF_NONE)
完全な長方形、ストレッチなし)
- システムメモリにプレーンなオフスクリーンサーフェスを作成する
device->CreateOffscreenPlainSurface(surf_desc.Width, surf_desc.Height, D3DFMT_A8R8G8B8, D3DPOOL_SYSTEMMEM, &sysmem_offscreen_surf, NULL)
- ビデオメモリからsysmemにデータをコピーします。
device->GetRenderTargetData(render_target, sysmem_offscreen_surface)
- オフスクリーンサーフェスからGetDC、互換性のあるDCおよび互換性のあるビットマップを作成し、オフスクリーンの表面DCから互換性のあるDCにBitBltを作成し、GetDIBits()によってビットマップビットをバッファーにコピーします
元のサーフェスからレンダリングターゲット、次にオフスクリーンサーフェス、互換性のあるビットマップ、最後にバッファへのコピーが非常に多いため、これは少しオーバーヘッドに見えます。これをどのように改善できますか?
ありがとう
list - ランダムな数のD2D形状(長方形と楕円)を作成し、描画中にそれらを配列として参照するにはどうすればよいですか?
詳しく説明させてください。D2D長方形を次のように定義します。
および楕円は次のようになります。
これらの形状を描画するには、最初にそれらを変換して、rendertargetに渡します。
ランダムな数の長方形と楕円を作成し、それらを配列に格納して、それらを描画できるようにする方法が欲しいのですが。0から5までの乱数を返す関数があります。その番号を使用して、これらの形状を指す配列を作成し、それらを繰り返して画面に描画できるようにしたいと思います。この問題にどのように取り組むことができるかについてのアイデアはありますか?
transparency - direct2D ID2D1BitmapRenderTarget への GDI レンダリングは常に透過的です
ムービー レンダリング ソフトウェアを DirectDraw から Direct2D に移植したいと考えています。互換性の問題のため、GDI レンダリングは画像の上で行う必要があります。パフォーマンスを最適化するために、何らかのバックバッファ メカニズムを実装したいと考えていますが、アルファ チャネル情報に問題があるようです。すべての GDI 描画は何らかの形で透明に見えます。
ウィンドウ ハンドル用のID2D1HwndRenderTargetと、イメージのコピー先の ID2D1Bitmap を作成します。ビットマップのピクセル形式はDXGI_FORMAT_B8G8R8A8_UNORMで、アルファ モードはD2D1_ALPHA_MODE_IGNOREです。HwdRenderTarget は GDI と互換性があるため、レンダリング関数は次のようになります。
このバージョンは問題なく動作します。GDI オブジェクトは単色で描画され、DrawTextEx-Text の背景は透明です。
パフォーマンスを最適化するために、「バックバッファー」で GDI 描画を実行したいので、何かが変更されたときにのみ実行する必要があります。それ以外の場合は、キャッシュされたビットマップをレンダリングできます。ビットマップは空で透明なので、描画されたオブジェクトだけが表示されます。
だから私は CompatibleRenderTarget ID2D1BitmapRenderTargetを作成し、アルファモードはD2D1_ALPHA_MODE_PREMULTIPLIEDです:
次に、CompatibleRenderTarget で GDI レンダリングを行います。
私のレンダー関数は次のようになります。
問題は、すべての GDI 描画が何とか透明であり、透明度が下にある画像ピクセルの値に依存することです。暗いテキストは、暗い画像の背景では暗く表示されますが、白い背景では白くなります。ただし、アルファ チャネルは GDI では使用されず、myBitmap にもアルファ情報はありません。
では、アルファ情報はどこから来るのでしょうか? 誰にもアイデアがありますか?前もって感謝します!
ちなみに、CompatibleRenderTarget で Direct2D 描画を使用しても問題なく動作します。
xna - 複数のレンダー ターゲットを指す
複数のレンダー ターゲットを使用する意味はありますか? 1 つのレンダー ターゲットに描画し、それをテクスチャに保存してから、ターゲットをクリアして再度使用することはできませんか?
xna - XNAの各フレームの後にレンダーターゲットを更新しない方法
たとえば、(10,10)で円を描き、次のフレームで(20,20)で別の円を描きます。(10,10)の円は表示されなくなります。
私はgraphicsdevice.clearを呼び出していません。
以前に描画したグラフィックをクリアしないようにする方法はありますか?
これらを2番目のrendertargetに描画しているので、背景として使用できます。
何か案は?
c# - XNA RenderTarget2DターゲットをSystem.Drawing.Imageにすることは可能ですか?
基本的に、私はC#WinFormsアプリケーションに取り組んでおり、XNA 3.1ゲームで画像を描画したいと考えています。これは、デバイスのプライマリバックバッファーであるか、設定する必要のあるレンダリングターゲットであるかは関係ありません。これは可能ですか?
c# - C# XNA renderTarget2D .Clear(Color.Transparent) が機能しない
私が望むのは、renderTarget2D を一度クリアして完全に透明にしてから、フレーム間でコンテンツを保持することだけです。
背景テクスチャを描画した後に renderTarget テクスチャを描画するので、塗りつぶしたくありません。ただし、 Clear(Color.Transparent) は不透明な紫色として表示されます。これは、私が理解しているように、デフォルトの透明な色です...
私は何を間違っていますか?コンストラクターで SurfaceFormat パラメーターを変更しようとしましたが、効果がありませんでした。私は何を間違っていますか?
c# - C#/XNA - RenderTarget2D.GetData()、RenderTarget2D.SetData(): フレームごとにテクスチャを複製するのは効率的ですか?
そのため、最後の質問以降、参照の問題を防ぐためにテクスチャを複製することが私の解決策であることがわかりました。しかし、私は質問しています:
まず、1 秒間に 60 回実行した場合、これは効率的ですか? 1 つのテクスチャを設定していますが、私はパフォーマンスに偏執的であり、パフォーマンスを適切または最高の状態に維持したいと考えています。「主に目立つフレームドロップ」などを引き起こしますか?
次に、新しい Color 配列を作成する代わりに、1 つをリサイクルするとパフォーマンスが向上しますか?