問題タブ [direct2d]

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 投票する
2 に答える
530 参照

winapi - Windowsのスキニングエンジン:「ダーティ」な領域のみを描画しますか、それともウィンドウ全体を一度に描画しますか?

アルファブレンドでカスタムシェイプのウィンドウを描画できるスキニングエンジンを作りたいです。つまり、レイヤードウィンドウ(UpdateLayeredWindow)を使用します。典型的なウィンドウには、その背景の中に、10×10からたとえば300×150ピクセルの範囲の他の数十のビットマップが含まれます。最悪の場合、これらの要素のほとんどは30fpsまでのスムーズなアニメーションになります。すべてがアルファブレンドされ、これにはDirect2Dを使用します(はい、古いバージョンのWindowsではサポートされていません)。一般的に、Winampの最新のスキンエンジンが最も近い例です。

これらすべてを考慮し、最新のPCのパフォーマンスを考慮に入れると、ウィンドウ全体を1フレームごとに再描画できますか、それともある種のクリップ長方形に制限する必要がありますか?

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

visual-c++ - 2Dテクスチャの一部を別のDirect3D11にコピーする

あるDirect3D112Dテクスチャの任意のポリゴン領域を別のテクスチャにコピーするにはどうすればよいですか?ID3D11DeviceContext :: CopySubresourceRegionメソッドを使用してみましたが、長方形の部分のみがコピーされます。VisualC++を使用しています。

編集:コードスニペットを追加しました。

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

direct2d - Direct2D と DXGI (D3D 相互運用) を使用したマルチスレッドのベスト プラクティスは何ですか?

理想的には、複数のワーカー スレッドで画面外のレンダー ターゲットにレンダリングし、レンダリングされたコンテンツを画面上のターゲットに「転送」できるようにしたいと考えています。hwnd レンダー ターゲットでは、これは問題ではないようです (msdn に例があります)。

画面上のレンダー ターゲットが DXGI スワップ チェーンに基づいている場合の方法がよくわかりません。私の知る限り、ウィンドウごとに 1 つのスワップ チェーンしか持てません。したがって、スワップ チェーンに基づくレンダー ターゲットは 1 つしか持てません。これは、オンスクリーン レンダリングがその単一のレンダー ターゲットを介してのみ実行できることを意味します。

上記の仮定が正しければ、マルチスレッド レンダリングを処理する最善の方法は何ですか? 画面上のターゲットへのアクセスをシリアル化する必要がありますか? ワーカー スレッドは単一のマルチスレッド d2d ファクトリを共有する必要がありますか? 適切なロック メカニズムが配置されている場合、画面上のターゲットの BeginDraw/EndDraw/Present をワーカー スレッド (つまり、画面上のターゲットを作成しなかったスレッド) で実行できますか?

提案をいただければ幸いです。ありがとう。

0 投票する
3 に答える
2770 参照

direct2d - Direct2D はバックバッファーを使用しますか?

https://docs.microsoft.com/en-us/windows/win32/direct2d/comparing-direct2d-and-gdiを読む:

プレゼンテーション モデル

Windows が最初に設計されたとき、すべてのウィンドウを独自のビットマップに格納するにはメモリが不足していました。その結果、GDI は常に論理的に画面に直接レンダリングされ、さまざまなクリッピング領域が適用されて、ウィンドウの外にレンダリングされないようにしていました。対照的に、Direct2D は、アプリケーションがバック バッファーにレンダリングし、アプリケーションが描画を完了すると結果がアトミックに「反転」されるモデルに従います。これにより、Direct2D は GDI よりもはるかに流動的にアニメーション シナリオを処理できます。

著者は、Direct2D はバック バッファーを使用し、「反転」とはスワップ チェーンを意味していると述べています。マウス クリックでランダムな位置に四角形を描画する簡単なデモを作成しました。ただし、以前の長方形はクリアされていないため、画面に直接描画され、バックバッファーを使用していないようです。

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

delphi - OpenGLのSwapBuffersに似たDirect2dコマンド?

OpenGl の SwapBuffers に類似した Direct2d コマンドは何ですか? Delphi や CPP Builder などの VCL 環境で使用しています。ありがとう

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

silverlight - Silverlight または WPF アプリケーションは、Direct2D または DirectWrite を使用してフォントと UI をレンダリングしますか?

IE9 が UI のレンダリングに GDI の代わりに DirectWrite と Direct2D を使用しているという多くの情報を見つけました。WPF と Silverlight アプリケーションにも同じことが当てはまりますか?

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

winforms - D3D10/11 および MDI ウィンドウを使用したパフォーマンス

私は、多くの(> 40)リアルタイム(30 fps)更新グラフを保持する可能性のあるMDIアプリに取り組んでいます。各グラフは、潜在的に 3D ジオメトリをレンダリングする必要があります。(各ウィンドウで) SlimDX を使用して各ウィンドウに Direct2D を使用しようとしましたが、16 個を超えるウィンドウを追加するとパフォーマンスが大幅に低下します。フィードバックが役立つ可能性のあるこれを経験した人はいますか?

  • 私は現在、ドキュメントによるとウィンドウごとに1つのスワップチェーンを持つD3D10/11 APIを使用しています。D3D9 ドキュメントでは、プレゼンテーションを行う前にウィンドウを切り替えることができます。これは推奨される使用方法です。代わりに D3D9 に切り替えてみるべきですか? スワップチェーンの切り替えの問題でしょうか?
  • スワップ チェーンの問題でない場合は、D2D をスキップして、独自の頂点バッファーを管理し、D3D を使用してレンダリングする方がよいでしょうか?

よろしく!

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

hardware-acceleration - サーバーサイドのシナリオで direct2d ハードウェア アクセラレーションを使用できますか?

direct2d リソースを参照すると、サーバー側のシナリオではハードウェア アクセラレーションが利用できないようです。

私の要件は、画像を画面外にレンダリングすることです。これは WicBitmapRenderTarget を使用して簡単に実現できますが、ハードウェア アクセラレーションではありません。Direct2d を使用してこれを達成する方法はありますか?

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

direct3d - Direct3D 10 との最適な 2D 統合は?

この時点で、ほとんどが DirectX 10 3D グラフィックスであるアプリケーションがあります。ここで、画面の一部に表示するリアルタイム 2D 画像を生成したいと考えています。2D グラフィックスは、外部ハードウェアからの生データを使用して生成されます。各値は、ピクセルの色と位置に変換されます。

Direct2D 統合オプションを見てきましたが、ピクセル単位でサーフェスに描画する簡単な方法は見当たりませんが、一般的な線と形状だけです。

Direct3D のみ (Direct2D を使用しない) でこれを行うことも可能であり、各ピクセルに単純な頂点を持ち、直交ビューで描画することも可能だと思います。

Direct2D を使用すると、リアルタイム 2D グラフィックスを生成するときに効率がまったく向上しますか? 私はシェイプツールを使いたくないので、それは私にとってセールスポイントではありません. Direct3D アプリケーション内で 2D グラフィックスを生成するための他の一般的な方法はありますか?

任意のポインタをいただければ幸いです。ありがとうございました。

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

c++ - Direct2D インターフェイスとぼやけたテキストの問題

私の新しいアプリケーションは、透明なアイコン/画像などを使用してオンザフライでサイズ変更できる豊富なインターフェイスを備えています。このアプリケーションでは、古き良き GDI に対して新しいDirect2D API を使用することを決定しようとしています。欠点の 1 つは、もちろん、XP で実行できないことですが、決定するのに少し厄介な問題があることがわかりました。

  1. Direct2D 環境でテキストを出力すると、少しぼやけて見えることに気付きました (ただし、機能として販売されています)。ハードウェア アクセラレーションを有効にした Firefox 4 (または IE9) のテキストを見てください。Direct2D では、GDI のようにテキストが (ピクセル) グリッドに準拠していないことが原因のようです。Direct2D を強制的にピクセル グリッドに準拠させて、この問題を解決する方法はありますか?

  2. 本当にそんなに速度が向上するのでしょうか? 私はこの記事を理解しようとしましたが、Windows 7 と XP (Vista ではありませんか?) では、GDI は可能な限りハードウェア アクセラレーションが既に行われています。たとえば、私のアプリケーションでは、適切な場所に配置されたばかりの多くのメモリDCを使用し、BitBlt透明な画像/アンチエイリアス線などを描画するためにAlphaBlend. ルーチンのテスト中に速度を測定したので、最後の 1 つは間違いなくハードウェア アクセラレーションです。

では、どこにお金を入れますか?Direct2D は手間をかける価値があるか、それとも古き良き GDI に固執しますか? それとも何か他のものを提案しますか?

注: 私は C++ でプログラミングしていますが、MFC は使用していません。