問題タブ [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.
image - ID2D1Bitmap を PNG ファイルに保存する方法
ID2D1Bitmap (ID2D1HwndRenderTarget から作成されたもの) を PNG ファイルに保存しようとすると、問題が発生しました。出力画像は白色で空です。関数呼び出し EndDraw() から返される HRESULT は -2003238894 です。
助けてくれてありがとう。
これが私のコードです:
visual-c++ - firebreathプラグインでウィンドウに描画できません
わかりました。direct2dを使用してfirebreathプラグインでウィンドウに書き込もうとすると、現在いくつかの大きな問題が発生しています。
FB :: AttachedEventイベントを追加し、そのハンドラー内で、direct2dグラフィックを初期化してレンダリングループを持つPluginWindow(FB :: PluginWindowWin *にキャスト)を渡すスレッドを生成します。
私の最初の主な懸念事項は、ハンドラーに渡されたプラグインウィンドウが正しくないように見えることです。HWNDを取得してGetCLientRectを実行すると、ウィンドウのサイズの60倍のサイズになります。HTMLで幅と高さを640x480に設定しましたが、rectは38400 x 28800の寸法を返しますか?
ある時点でfirebreathの設定を間違えたので、何かおかしなことをしているのでしょうか。
bitmap - DirectX -- クワッドを WicBitmapRenderTarget (SharpDX) にレンダリングする
この前の質問のように、Direct3D11 を使用してイメージ ワーピングを非常に高速に実行しようとしていますが、すべてを連携させることができないようです。
DXGI サーフェスを Direct2D ビットマップに読み込もうとすると、うまくいきません。
また、メソッドを使用してサーフェスを直接読み取ろうとしましたMap
が、データで何かをしようとする前に失敗します。
より完全なコードを以下に示します。また、この仕事に関係のないものがここにあるとしたら... 私はすべて耳を傾けています。私は実際には 3D の人間ではなく、簡単な Direct2D ソリューションを持たない非常に具体的な問題を解決しようとしているだけです。
c++ - IWICBitmapのID2D1DeviceContextを作成するにはどうすればよいですか?(C ++のMetroアプリの場合)
次のコードを使用して、IWICBitmapのID2D1RenderTargetを作成できます...
ただし、このビットマップにID2D1Effectを適用する場合は、ID2D1DeviceContextがある場合にのみ適用できます。IWICBitmapのID2D1DeviceContextを取得するにはどうすればよいですか?
directx - Direct2D を使用して Direct3D11 サーフェスに描画する
D2D と D3D11 を使用してビデオにテキストを描画する Media Foundation Transform を作成しようとしています。D3D11 リソースの上に D2D RenderTarget を構築しようとしていますが、残念ながら、D2D と D3D の相互運用のほとんどの手段には D3D10 が必要ですが、これはこのプロジェクトでは利用できません。
使用する必要があるパラメーターは次のとおりです: ID3D11Device *pDevice、ID3D11Texture2D *pInput、UINT uiInIndex、ID3D11Texture2D *pOutput、および UINT uiOutIndex。
このチュートリアルのアドバイスに従おうとしましたが、ID3D10Texture2D オブジェクトが必要であることがわかりました。これも私にとっては選択肢ではありません。
directx - SharpDx で png に保存
Direct2D で SharpDx を使用して Metro アプリケーションを開発しています。を使って絵を描きましたdeviceContext
。画像をpngファイルに保存するにはどうすればよいですか?
c++ - Direct2D ---ブラシリソースが個々のDirect2Dレンダーターゲットにバインドされるのはなぜですか?
MicrosoftがBrushリソースを、Direct2Dコンテキスト全体ではなく、個々のDirect2Dレンダリングターゲットにバインドすることを決定したのはなぜですか。ユーザーがフルスクリーンモードとウィンドウモードを切り替えたとき、またはサイズ変更したときに、画面の全幅と高さにサイズ変更する必要があるDirect2Dレンダリングターゲット(HUDの場合)にマップされたDirect3Dテクスチャがある場合はどうすればよいですか?窓?これが発生したときにすべてのブラシを再作成するのは、これだけです。または、Direct2Dサーフェスではなく、ブラシをID2D1Factoryにバインドするなど、別の方法はありますか?
cuda - DirectXをGPU専用にし、CUDAを別のGPU専用にする方法は?
私のアプリケーションでは、GUIスレッドはDirect2Dを使用して画像を表示し、ユーザーがパンとズームを行えるようにします。別のスレッドはCUDAを使用して画像処理を行います。画像処理スレッドがGUIスレッドによって妨害されるのを防ぎ、処理を高速化するために、次の設定でCUDAコンピューティング用に別のグラフィックカードを追加することを選択しました。
- ディスプレイ用のNvidiaQuadro400(Direct2D、PCと一緒に販売、ディスプレイ用に十分)
- CUDAコンピューティング専用のNvidiaGT640(コアが多く、アプリケーションが実行する必要のある処理がより効率的で、BIOSでの表示が無効で、画面が接続されていないため、CUDAコンピューティング専用に追加されました)。CUDAスレッドには、このGT640のみを使用するためのコードが含まれています。
ただし、これは期待どおりに機能しませんでした。ユーザーが画像をパンすると、表示が連続して更新されるため、CUDAの実行時間は通常の20ミリ秒から約800ミリ秒に跳ね上がります。GPUView(この問題を調査してまったく習得していないことを発見しました)を使用して、CUDAスレッドがGPUへのコマンドをキューに入れる前にディスプレイの更新が完了するのを待っているように見えることがわかりました。その間、Direct2DはGPUをほとんどの時間未使用のままにします(16ミリ秒のVSync期間で1ミリ秒の作業)。Direct2Dへの呼び出しがすべてのGPUを16ミリ秒間ブロックしているように見えます。その後、GUIスレッドによってCUDAスレッドが枯渇します(ただし、これらのスレッドはGPUアクセス以外の方法で同期されません)。
したがって、質問は次のとおりです。
- 何が起こっているのでしょうか?
- Direct2Dを1つの特定のGPUでのみ実行するように強制することは役に立ちますか?
- それも可能ですか、それとも私は問題を間違った方法で取っていますか?
direct2d - DirectWriteテキストオブジェクトの1つを変換し、他のオブジェクトは変更しないようにする方法
同じレンダーターゲットに複数のDirectWriteテキストオブジェクトがあり、そのうちの1つを一度に変換し、他のオブジェクトは変更しないようにしたい。Direct2Dには、いくつかのタイプの変換があります。
- ターゲット変換をレンダリングする
- ジオメトリ変換
- ブラシ変換
レンダリングターゲット変換は、その上のすべてのオブジェクトに影響するため、使用できません
テキストはジオメトリではなく、IDWriteTextLayoutの変換メソッドがないため、ジオメトリ変換を使用できません。
したがって、私にとっての唯一の選択肢はブラシ変換ですが、ソリッドブラシを使用して変換された長方形を描画しようとすると、元の場所に描画されます(以下のコードを参照)。sdkデモはビットマップブラシ変換の例を示しています。だから私の質問は:変換は他のタイプのブラシでも機能しますか?しっかりしたブラシのように?
これが私のコードです。まず、経過時間に基づいて変換マトリックスを計算し、次にこのマトリックスを使用してブラシを変換し、最後に長方形を描画します。見て、これが事実かどうか、または他の方法でそれを行うことができるかどうかを教えてください。
direct2d - Direct2D でパス ジオメトリのセグメントを取得する方法は?
次の図は、Direct2D のパス ジオメトリを示しています。これには 5 つのセグメントが含まれており、各セグメントは直線です。私の要求は、このような丘がある場合、5 本の線すべてを取得したいということです。
しかし、Direct2D でパス ジオメトリのセグメントを取得できる関連 API はないようです。セグメントを取得できない場合、ID2D1PathGeometry インターフェイスがメソッド GetSegmentCount を提供していることがわかります。Microsoft がこのメソッドを提供するのはなぜですか?