3D描画時の初期設定

この章ではSharpDX(DirectX)の3D初期化部分について解説します。
このページの内容は、スワップチェーン設定まで終わっていることが前提です。

SharpDXのDirectX11を関連付け

必要なパッケージをインストール

  1. 「NuGet」を使った同じやり方で「SharpDX.D3DCompiler」「SharpDX.Mathematics」をインストールします。

Direct3Dの設定

レンダーターゲット設定

  1. Direct3Dを設定するために必要なファイルを関連付けます。
    using SharpDX.D3DCompiler;
    
  2. 3D描画用のレンダーターゲットを宣言します。
    // レンダーターゲット3D
    private RenderTargetView _RenderTarget3D;
    
  3. 3D描画用のレンダーターゲットを生成します。
    // バックバッファーからレンダーターゲットを生成する
    _RenderTarget3D = new RenderTargetView(_device, _BackBuffer);
    

Shader設定

  1. 頂点シェーダーとピクセルシェーダーの2つを設定します。
    // 頂点シェーダーを設定する
    var vertexShaderByteCode = ShaderBytecode.CompileFromFile("MiniTri.fx", "VS", "vs_4_0", ShaderFlags.None, EffectFlags.None);
    var vertexShader = new VertexShader(_device, vertexShaderByteCode);
    // ピクセルシェーダーを設定する
    var pixelShaderByteCode = ShaderBytecode.CompileFromFile("MiniTri.fx", "PS", "ps_4_0", ShaderFlags.None, EffectFlags.None);
    var pixelShader = new PixelShader(_device, pixelShaderByteCode);
    
  2. 「MiniTri.fx」ファイルを実行ファイルであるexeと同じディレクトリ(フォルダ)内に入れます。

    ファイルの中身はページ下記に全文が載っていますのでテキストエディタでコピペして「MiniTri.fx」で保存してください。

    ここで使われるシェーダー用のファイル「MiniTri.fx」はSharpDXサンプルに付属していたものを使用してします。大元は、SlimDX時の流用(MITライセンス)となっています。

    シェーダーの細かい解説は省略しますが、おおまかに言えば「入力された色・位置データを加工せずそのまま出力する」というコードになっています。

Layoutを定義・生成

  1. DirectX用のデバイスやシェーダーの設定など描画関連の設定を行います。

コード

Program.cs

GameForm.cs

MiniTri.fx

長かった下準備もようやく終わりました。この設定で「3D描画処理」に入れます。次からはポリゴンの描画などに移っていきます。