問題タブ [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.
direct2d - SharpDX の MeasureString
を使用してWindows 8メトロアプリを開発していますSharpDX
。ここで、 内で一連の文字列を宣言する必要がありますRectangle
。そのために、 を使用してフォントの幅と高さを調べようとしていますSharpDX.DrawingSizeF
。例えば:
MeasureString
を使用せずに調べようとしていますWindows.Graphics
。出来ますか?MeasureString
または に入る、SharpDX
または使用する他の方法はありますDirect2D
か?
slimdx - KeyedMutexを使用したSlimDXワープデバイス
KeyedMutexを介してDirectX11でDirect2Dを使用しています。ハードウェアデバイスを使用している場合は、すべてがうまく機能します。デフォルトでWarpデバイスを使用すると、Texture2Dオブジェクトを作成するときに問題が発生し、「Direct3D11Exception:E_OUTOFMEMORY:Ranoutofmemory」というエラーメッセージが表示されます。
これらは責任がある行です:
繰り返しますが、ワープではなく、ハードウェアデバイスを使用してすべてがうまく機能します。PIXに対して実行すると、次のように表示されます。
<0x09033390> ID3D11Device:CreateTexture2D(0x0FD1E330、NULL、0x0FD1E32C-> NULL)
これはWarpドライバーを使用していますが、最後のNULLがNULLではないハードウェアを使用すると、D3D11Texture2Dオブジェクトを指す実際のポインターになります。
何かご意見は?ここに多くのコードを含めていないことは知っていますが、DXルーチン全体を投稿しなくても、誰かがこれが何であるかを知ってくれることを望んでいました。必要に応じて行います。
私はデバッグと10.1DXを使用します。デバッグ出力は次のとおりです。
directx - C ++(DirectXグラフィックス)でDrawLineを使用する方法
これはドキュメントのサンプルです。「D2d1.h」を含めましたが、「m_pRenderTarget」の作成方法がわかりません。Kinectプロジェクトを書いていますが、画像に線を引きたいです。私は本当に新しいです、助けてください。
c++ - WIC Direct2D CreateBitmapFromMemory:幅と高さの制限?
CreateBitmapFromMemory は、 _nWidthが644 以下の場合に正常に実行されます。 値がこの値を超える場合、HRESULT 値は -2003292276 です。
幅と高さに制限はありますか?
nWidth が 644 を超える場合、CreateBitmapFromMemory はエラーを返します。
c++ - Windows 8 デスクトップ アプリ、ID2D1DeviceContext を使用して HWND にレンダリングする方法は?
例を使用します。
http://msdn.microsoft.com/en-us/library/windows/desktop/hh780339(v=vs.85).aspx
これは、ID2D1DeviceContext が Windows ストア アプリ (Metro) とデスクトップ アプリの両方に使用でき、HWND (c++ デスクトップ アプリ) へのレンダリングに使用できることを示しています。
ただし、この例は Windows::UI:Core::CoreWindow に固有のものです。(Windows ストア/Metro)
これは同じです。 http://msdn.microsoft.com/en-us/library/windows/desktop/hh780340(v=vs.85).aspx
これを達成する方法についての提案はありがたく感謝します!
K
interop - Direct2DGdiInteropRenderTargetを使用してGDIオブジェクトがリークする
互換性のあるレンダリングターゲットでGdiとDirect2Dの両方を使用してビットマップをレンダリングしようとしています。D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS_GDI_COMPATIBLEオプションを使用して互換性のあるターゲットを作成し、次のようにします。
しかし、このレンダリングメソッドを呼び出すたびに、多くのGDIオブジェクトのリークが発生するため、問題が発生しているようです。私もこれをやってみます:
リークも発生します。ID2D1GdiInteropRenderTargetによって作成されたHDCでDeleteDC()またはReleaseDC()も試してみましたが、成功しません。
なにか提案を?前もって感謝します!
c++ - SolidColorBrushの作成中にエラーが発生しました
私のコードでは、Direct2DSolidColorBrushを次のように作成しようとしています。
CreateSolidColorBrush
関数が呼び出されると、ヘッダーファイル内にエラーがスローされますd2d1.h
。
これを引き起こしているのは何ですか?どうすれば修正できますか?
directx - WinRT の 2D スプライト ゲーム: Direct2D BitmapSourceEffect を使用するか、カスタムの単純なシェーダーを使用してレンダリングを行う必要がありますか?
環境
このマルチプレイヤー D&D 遭遇ツール (WinRT 用の C#) を構築しています。これは、各プレイヤーが自分のキャラクターを制御し、DM が環境全体やモブなどを制御できる単純な 2D グリッド ベースのユーティリティです。DirectX を使用することにしました。 ( SharpDXラッパーを介して) 標準の XAML 要素 (おそらくこのシナリオも処理する) とは対照的に、主に DirectX を学習し、低スペックの PC でパフォーマンスを向上させる可能性があります (XAML が画面上の何千ものスプライトを処理する方法がわからない)。
質問
私は DirectX を初めて使用するので、スプライト(キャラクター、小道具、背景タイルなど)を描画する最良の*方法は何かと考えていました。
*パフォーマンスと GPU メモリ要件の観点から言えば、最良の方法です。私の目標は、このツールを低スペックの ARM タブレットでも適切に実行できるようにすることであり、それぞれのアプローチがどれほど厳しいものであるかはわかりません。
現在、私は Direct2D BitmapSourceEffectを使用しており、 WIC APIを使用して各スプライト バッチをロードしています。私がさまざまな DirectX 本で遭遇した別のアプローチは、この SO の質問で説明されています: What is the best pratice[sic] to render sprites in DirectX 11?
BitmapSourceEffect を使用する方が簡単に思えますが、それは適切なツールでしょうか? 今日の後半で 2 つのアプローチを比較する予定です (FPS の観点から、多数のスプライトをレンダリングします) が、おそらく皆さんはこの問題についてより多くの洞察を提供することができます. ありがとう!
c++ - C++ Direct2D ID2D1HwndRenderTarget の親 IUnknown クラスの _vfptr 変数が null になる
作成中の Direct2D アプリがあり、Direct2D を簡単に使用できるようにする Direct2D ライブラリも作成しています。必要に応じて正確な問題のあるコードを投稿しますが、主な問題は、あるクラスの定義に ID2D1HwndRenderTarget があり、そのクラスを別のクラスで拡張し、子クラスにメソッドを呼び出すメソッドがあることです。レンダー ターゲットを初期化する親クラスの、次に子クラスの load メソッドを呼び出します。ただし、プログラムが子クラスのコンテンツ読み込みメソッドに到達するとすぐに、ID2D1HwndRenderTarget の IUnknown 部分にある __vfptr 変数 (それが何かはわかりません) が null になります。私がこれを理解した唯一の理由は、他のコードで、レンダー ターゲットを使用して IWicBitmapSource から ID2D1Bitmap を作成するときにアクセス違反エラーが発生したことです。レンダー ターゲットを初期化した後、初期化コードを含むメソッドが戻るとすぐに _vfptr 変数が null になるため、これがどのように発生するのかわかりません。なぜこれが起こっているのか誰にも説明できますか?私の関連コードは以下です。
このコードは、hwnd レンダー ターゲットとオフスクリーン レンダー ターゲットを作成するために 1 回呼び出されます。これは dll プロジェクトにあります。GameBase.cpp
LoadContent の呼び出し後、mainRenderTarget の値を変更することは決してありません。
DX2DImage.cpp
回線でアクセス違反例外が発生する
ここで、image->bitmap は現在 NULL (想定どおり) ID2D1Bitmap です。
ここで、renderTarget 変数は、上記の GameBase.cpp の mainRenderTarget 変数と同じです。行をデバッグすると、RenderTarget のすべての親が null ではありませんが、その下にある IUnknown インターフェイスに到達すると、_vfptr が null になります。これは、converter 変数、this 変数、または image 変数には当てはまりません。
directx - ID2D1BitmapBrushからIDXGISurfaceを取得します
私のアプリケーションは2つのDXGISurfaceRenderTargetsを使用しています。
最初のレンダーターゲットを使用して作成しID2D1Bitmap
、次にそこID2D1BitmapBrush
から作成します。
結果ID2D1BitmapBrush
は、2番目のレンダリングターゲットでFillGeometryに使用されます。
またはからIDXGISurface
作成するために使用されたものを取得することは可能ですか?ID2D1BitmapBrush
ID2D1BitmapBrush
ID2D1Bitmap
Windows 8にはID2D1Bitmap1
withGetSurface
メソッドがありますが、Windows7ではこれが必要です。
ありがとうございました。