- ベストアンサー
VISTAでGDI
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> StretchRectとPresentの間にバックバッファに出力している そのタイミング(Presentの直前)で問題ないはずです。 あとは、 「ちゃんとバックバッファから GetDC しているかどうか(別のサーフェイスからGetDCしたりしていないか)」 「描画後にちゃんと ReleaseDC しているかどうか」 あたりを確認でしょうか。 GDIを使った描画プログラムの例 http://www13.plala.or.jp/kmaeda/directx9/backbuf.htm http://toruweb.web.fc2.com/sample/dxg2.html なんかを見て、記述方法に間違いがないか確認してみてください。
その他の回答 (2)
- mtaka2
- ベストアンサー率73% (867/1179)
> SurfaceにGDIで描画すると画面を縮小した際に細い線が見えなくなるケースが出てきてしまった どのサーフェイスに描画しているのでしょうか? 最終的に表示される「バックバッファ」のサーフェイスに描画すれば、 それがそのまま等倍で表示されて、縮小などが行われることはありませんから、 「細い線が見えなくなる」といった状況は発生しないと思います。
お礼
回答ありがとうございます。 リプライ遅くなりました。 教えて頂いたようにバックバッファのデバイスコンテキストに 出力してみたのですが表示されません。 StretchRectとPresentの間にバックバッファに出力しているのですが 何かバックバッファに出力する為の条件があるのでしょうか?
- mtaka2
- ベストアンサー率73% (867/1179)
Windows XP までは、ウィンドウ描画の基本はGDIで、その上にDirectXの描画機能を載せている形になっていたため、DirectXによる描画が行われたウィンドウに、さらにGDIによる描画を行うことができましたが、 Vista で Aero が有効な場合、ウィンドウ描画の基本はDirectXになったため、DirectXで描画したウィンドウの上にGDIで描画しても、結果が正しく反映されません。 ウィンドウに直接描画する(ウィンドウから取得したDC を使う)のではなく、 DirectXでの描画画像が記録されているサーフェイスに描画する(DirectDrawSurface に対し GetDC で取得したDCを使う)ようにすれば、 DirectXの描画とGDIの描画が共存出来ます。 (DirectDrawSurface のDCに描画するコードは、XP でも問題なく動作します。)
お礼
回答ありがとうございます。 DirectXで描画したウィンドウの上にGDIで描画している理由は SurfaceにGDIで描画すると画面を縮小した際に細い線が見えなくなるケースが出てきてしまったのでそのようにしていました。 現在はSurfaceをロックして画像を書き込んでいるのですがテクスチャーに書き込むようにしてMINFILTERをかければ大丈夫なものでしょうか?
お礼
D3DPRESENT_PARAMETERSのFlagsパラメータにD3DPRESENTFLAG_LOCKABLE_BACKBUFFERが設定されていませんでした。 設定したところ表示できました。 本当にありがとうございました。