none
【Managed DirectX】 Device.Clear時の背景色について RRS feed

  • 質問

  • VisualStudio 2005 C#の開発環境でManaged DirectXを使用しているのですが、

    描画領域(Device)のClear時の背景色設定で背景色を単色以外(グラディエーションなど)のものに指定したいのですが、何か方法は無いのでしょうか?

    画面サイズのグラディーションしている外部ファイルを貼り付けるという方法以外で探しています。

            

    Code Snippet
    // 描画内容を単色でクリアし、Zバッファもクリア
    _device.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.XXX, 1.0f, 0);

     

    上記のColorのところにEnptyやアルファ値0の色を指定しては見たのですが、普通に背景が単色で表示されてしまいました。

     

    手法としては

    ・Clearの背景色を透明に指定してFormまたはピクチャボックスの背景色を透過させる

    (Formまたはピクチャボックスにはあらかじめグラディエーションの背景を描画しておく)

    ・Clearの背景色にグラディエーションを指定する

     

    等の方法があると思われるのですがHelpドキュメントやWebサイト等で有力な情報が入手できませんでした。

     

    どなたか、情報をお持ちの方がいらっしゃいましたらご教授願えないでしょうか?

     

    #ManagedDirectXに関するフォーラムが見つからなかったのですがここで質問しても良いのでしょうか・・・

    2007年5月7日 2:24

すべての返信

  • >Clear時の背景色設定
    Clear時は無理だと思います。
    単なるグラデーションなら黒でクリアした後
    DrawPremitiveを使えばよいと思います。
    それともフォーム上にDirectXを使って半透明なものを表示したいのでしょうか?
    その場合はフォームのDCを取得して一旦画像として保持してから
    Clear後にその画像を貼り付け、その上から
    DrawPremitiveやアルファ値を持つテクスチャを
    貼り付けるぐらいしか思いつきません。
    少なくともWindowsXpでのウインドウはGDIを使って表示している為
    DirectXの表示とは仕組みが違い、普通の方法では
    DirectXの描画とGDIの描画のアルファブレンドは無理だと思います。
    (DirectX10 + Vistaだと別の方法があるのかもしれません。)

    #小生C++でDirectXを扱った事はありますがManaged DirectXの経験ありません。
    2007年5月9日 18:04