0

DirectX 11 バージョンと OpenGL 3.1+ バージョンで提供されるプロジェクトに DirectWrite を使用することを検討しています。

理解していることから、DirectWriteはDirect3D 10.1の上にあるDirect2Dを使用します(DirectX 11.1がリリースされるまで)。これは、現在、Direct3D 11 で DirectWrite を使用するには、1 つの Direct3D 10.1 デバイスと Direct3D 11 デバイスを作成し、これら 2 つのデバイス間でリソースを共有する必要があることを意味します。これには、同期のオーバーヘッドが伴うようです。もう 1 つの問題は、この設定ではテキストを d3d11 バックバッファーに直接レンダリングできないように見えるということですよね...?

また、実際的な意味で DirectWrite と OpenGL を組み合わせることが可能かどうかもわかりません..? 私の推測では...

すっごく... 私も独自のフォント レンダラーを作成することを検討しています。解像度に依存しないように、ベジエ スプライン アウトラインに基づいてフォントをレンダリングできるようにしたいと考えています。GetGlyphOutline() 関数については知っていますが、MSDN ライブラリによると、非推奨であり、「...新しいアプリケーションでは使用しないでください」と思われます。また、MSDN の DirectWrites リファレンス ページを見ても、GetGlyphOutline() でできるように、ベジエ スプライン情報で同じものを取得する方法がわかりません。ID2D1SimplifiedGeometrySink にラップされたアウトライン情報を取得できますが、ID2D1SimplifiedGeometrySink から純粋なベジエ曲線、コントロール ポイント、情報を取得する方法がわかりません。D2D (D3D10.1) を使用した描画にのみ使用できます。現時点ではあまり興味がありません。

非推奨のメソッド、DirectWrite などを使用してフォントのアウトラインの輪郭を取得する方法はありますか?

お分かりのように、私は DirectWrite と Direct2D のどちらにもあまり詳しくありません。どの方向に進むべきかを模索中です。DirectWrite/D2D の道をたどる価値があるのか​​、それとも独自のフォント レンダラーを作成するのか、またはその他の素晴らしいアイデアを作成するのか :)。助言がありますか?

PS 現在、Win7 プラットフォーム向けに開発を行っており、リリースされたら Win8 に移行する予定です。

4

1 に答える 1

3

幸いなことに、あなたはそれを少し後方に持っています。Direct2D は DirectWrite を使用しますが、その逆ではありません。技術的には、DirectWrite を単独で使用できます (参照: IDWriteBitmapRenderTarget)。プロトタイピングの段階にある場合は、Direct2D を使用して、IWICBitmap作成されたスルーにソフトウェア レンダリングを行う方が簡単かもしれませんIWICImagingFactory::CreateBitmap()(または、既に作成したビットマップをラップして、IWICBitmap自分で実装するだけです)。を使用しID2D1Factory::CreateWicBitmapRenderTarget()、 を呼び出し、を介してand/orをID2D1RenderTarget::BeginDraw()作成し、レンダー ターゲットでorを呼び出し、次に を呼び出します。次に、ハードウェア テクスチャにコピーして、好きなように描画します。IDWriteTextFormatIDWriteTextLayoutIDWriteFactoryDrawText()DrawTextLayout()EndDraw()

于 2012-06-28T07:49:47.730 に答える