ページ

2009年1月14日水曜日

[Win7] Direct2D と DirectWrite

あちこちで 「Windows7 beta を入れてみた」 なんてネタで盛り上がってるようですが、私はまったくついて行けてません(^^;
が、ふと、あるブログ記事が目に留まりました。

SDK Documentation for Direct2D and DirectWrite now live on MSDN

そういや、なんか DirectX に増えるとかなんとか聞いた覚えがあるけど、こいつらかぁ。

リファレンス Direct2D によると

Direct2D は、2-D ジオメトリやビットマップ、テキストをハイパフォーマンス、ハイクオリティにレンダリングするために提供されるハードウエア・アクセラレータが効く、immediate-mode な (直接的な?) 2-D グラフィック API。Direct2D API は GDI、GDI+、Direct3D と協調して動くようにデザインされている。

だそうです。
もちろん、DirectX 族なのでバリバリの COM です。
CoInitialize したあとに、ID2D1Factory を CreateFactory してやって、ID2D1HwndRenderTarget をこさえてやって、、、みたいなノリです。
機能の方は、もっとハードよりな基本的なものだけかと思ったら、グラデーションブラシだとか 3×2 行列の SetTransform だとかそれなりの機能はあるみたいです。

おもしろいなぁ。
GDI+ とか Vista とかで 「もう、2D 描画は CPU で適当にやっとけばいいんじゃね?なんだったら Direct3D を 2D 描画目的に使ってもいいし」 という方向に向かったと思ってたのに、また 「ハードウエア・アクセラレータを使って 2D 描画を高速化!」 なんてところに帰ってきたのか。
と思ったら、Overview なんかに書いてありました。
どうやら Direct2D の中身は Direct3D10 らしい。
ということは、2D 描画だけをしたいときに Direct3D はいろいろと煩雑だからそういったところを隠ぺいして使いやすくしたのが Direct2D ってことなのかな?

もう 1つの DirectWrite。
こちらもリファレンス DirectWrite によると、

今日のアプリケーションでは、ハイクオリティなテキストレンダリング、レゾルーション非依存のアウトラインフォント、ユニコードテキストとレイアウトのサポートがサポートされなくてはいけない。DirectWrite はこれらの機能を提供する。(以下、いろいろと続く)

だそうです。
GDI や Direct2D、その他のレンダリングテクノロジを使ってハイクオリティな ClearType テキストをレンダリングできるともあります。
フォント・ラスタライザとかフォントの描画エンジンそのものが DirectWrite ってことなのかな?
想像だけど、今までのフォント描画エンジンは GDI の一機能というイメージだったけど、それだと Direct3D や Direct2D なんかの非 GDI でのフォント描画はどうするんだっていうことになるので、フォント描画エンジンをレンダリングテクノロジ非依存になるように切りだしたってこと?


3 件のコメント:

  1. つ ttp://d.hatena.ne.jp/NyaRuRu/20081126/p1

    返信削除
  2. GDIサヨナラの準備かと。

    返信削除
  3. こちらもかなり難しいけど、、、
    読ませて頂いていますww

    返信削除