無料ブログはココログ

« New type ではないらしい。 | トップページ | Windows Phone 7 SDK »

2010年3月 9日 (火)

Direct2D を Direct3D11 で。

今日も会社を休んだ。熱は平熱になった。ていうか今度は下がりすぎ 36.0 度はちょっと 低いよ。今日は寒いしぶり返すといけないので大事をとって休ませてもらった。ただ咳がまだ止まらないのが非常に怖い。

さて本題。結果だけ言うとできない。正確には DX11 だけではできない。

Direct3D11 だけで ID2D1Factory::CreateDxgiSurfaceRenderTarget を使って、テクスチャに描画できそうだから簡単ジャンと思っていると、E_NOINTERFACE が返ってきて作成することができない。Direct3D10 のサンプルと同じ IDXGISurface インターフェースだからいいじゃん と言いたいが甘くはない。

さてとこの問題を解決するためにいろいろくぐってみると、結論としては

IDXGISurface は ID3D10Device から作る必要がある。
ID3D10Device と ID3D11Device はアダプタは同じでなければならならい。

とまぁここまでは分かっているんだけど、本当に正しいの ? 断片的な情報ばっかりでサンプルソースすらまともにない 状態。時代は(API 的に) Direct3D11 ですYO!だから Direct3D11 でやらせてと思っている自分としては、ソースコードに Direct3D10 の API は混ぜたくないという願望がある。でもできないものは仕方がないので混ぜるしかない。

とサンプル作って解説書こうかなと思っていたらいち早く実現させている方がいらっしゃるではないですか !

Direct2D と Direct3D 11 の共有方法

ソースコードみている限り自分が調べた内容と一致している。でもよく少ない情報から実装まで持っていけるなぁと感心してしまう。すばらしい。

« New type ではないらしい。 | トップページ | Windows Phone 7 SDK »

プログラミング」カテゴリの記事