Direct3D 11 を使用して単純な三角形を画面に表示しようとしていますが、何も表示されません。ここに私の頂点があります:
SimpleVertex vertices[ 3 ] =
{
{ XMFLOAT3( -1.0f, -1.0f, 0.0f ) },
{ XMFLOAT3( 1.0f, -1.0f, 0.0f ) },
{ XMFLOAT3( -1.0f, 1.0f, 0.0f ) },
};
予想される出力は、画面の左上隅に 1 点、画面の右上隅に 1 点、画面の左下隅に 1 点を持つ三角形です。ただし、どこにも何もレンダリングされていません。
マトリックス変換は一切実行しておらず、頂点シェーダーは入力を直接出力に渡すだけです。すべてが正しく設定されているようで、Visual Studio 2012 でグラフィックス デバッガーを使用すると、正しい頂点位置が頂点シェーダーに渡されます。ただし、パイプラインで頂点シェーダー ステージから出力マージ ステージに直接スキップします。これは、ピクセル シェーダーに何も送信されていないことを意味すると思います。これは、ベクトルがラスタライザー ステージで破棄されていることを意味します。なぜこうなった?
これが私のラスタライザの状態です:
D3D11_RASTERIZER_DESC rasterizerDesc;
rasterizerDesc.AntialiasedLineEnable = false;
rasterizerDesc.CullMode = D3D11_CULL_NONE;
rasterizerDesc.DepthBias = 0;
rasterizerDesc.DepthBiasClamp = 0.0f;
rasterizerDesc.DepthClipEnable = true;
rasterizerDesc.FillMode = D3D11_FILL_SOLID;
rasterizerDesc.FrontCounterClockwise = false;
rasterizerDesc.MultisampleEnable = false;
rasterizerDesc.ScissorEnable = false;
rasterizerDesc.SlopeScaledDepthBias = 0.0f;
そして、私のビューポート (幅/高さは、テスト セットアップで 1024x576 に設定されているバック バッファーに一致するウィンドウ クライアント領域です):
D3D11_VIEWPORT viewport;
viewport.Height = static_cast< float >( height );
viewport.MaxDepth = 1.0f;
viewport.MinDepth = 0.0f;
viewport.TopLeftX = 0.0f;
viewport.TopLeftY = 0.0f;
viewport.Width = static_cast< float >( width );
ラスタライズ ステージで頂点がドロップされている原因を特定できる人はいますか? または、これを引き起こしている可能性のある D3D セットアップの他の部分がありますか?