EDIT:私は深度 - ステンシルビューを設定していません、問題がありますか?カメラの位置を変更すると、一部の頂点の色が消えます
私はtutorialに従おうとしていますが、カメラ位置をXMMatrixLookAtLH
に変更すると、いくつかの頂点の色が消えます。私は未定義の振る舞いをしているように感じます。彼らは作成しても、頂点シェーダにレイアウトされて
ConstantBuffer cb;
cb.world = DirectX::XMMatrixIdentity();
cb.view = XMMatrixLookAtLH({ 4.0f, 0.0f, 0.0f, 1.0f }, { 0.0f, 0.0f, 0.0f, 1.0f }, { 0.0f, 1.0f, 0.0f, 0.0f });
cb.projection = DirectX::XMMatrixPerspectiveFovLH(XM_PI/2.0f, (float)windowWidth/(float)windowHeight, 0.1f, 110.0f);
レイアウトが順番に正確である:ここでは
はConstantBuffer
に詰め世界、ビューおよび投影行列の作成です。私はそれらを転置する。私も
alignas(16)
で構造体を宣言しようとしましたが、何の効果もありませんでした。ここで
は、バッファの私の創造である:私は作成時に、それを初期化していますチュートリアル、と比較すると
ZeroMemory(&bd, sizeof(D3D11_BUFFER_DESC));
bd.BindFlags = D3D11_BIND_CONSTANT_BUFFER;
bd.ByteWidth = sizeof(cb);
bd.CPUAccessFlags = 0;
bd.MiscFlags = 0;
bd.StructureByteStride = 0;
bd.Usage = D3D11_USAGE_DEFAULT;
ZeroMemory(&initialData, sizeof(D3D11_SUBRESOURCE_DATA));
initialData.pSysMem = &cb;
hr = device->CreateBuffer(&bd, &initialData, &constBuffer);
deviceContext->VSSetConstantBuffers(0, 1, &constBuffer);
。私はそれを初期化しようとしましたが、それは何も変更されませんでした。私は彼らのバージョンをコンパイルすることができませんでしたので、
cbuffer ConstantBuffer : register(b0)
{
matrix world;
matrix view;
matrix projection;
}
struct PixelInputType
{
float4 pos:SV_POSITION;
float4 color:COLOR;
};
PixelInputType main(float4 pos : POSITION, float4 color : COLOR)
{
PixelInputType output = (PixelInputType)0;
output.pos = mul(pos, world);
output.pos = mul(output.pos, view);
output.pos = mul(output.pos, projection);
output.color = color;
return output;
}
それは、チュートリアルのそれとは非常に異なっている:
は、ここに私の頂点シェーダです。ビューの変換についてコメントしようとしましたが、意図したとおりに機能しました。
また、NSightを使用してフレームをデバッグしようとしましたが、それはの現在のですが、色は失われています。
このような現象を引き起こす原因は何もわかりません。私はx64でコンパイルしています。私は可読性のチェックを削除しましたが、すべての呼び出しにはHRESULT
を返します。失敗した場合、チェッカーは常にスローします。キューブは、チュートリアルとまったく同じように、原点を中心にしています。
EDIT:ビューポートMinDepth
とMaxDepth
はそれに応じて0.01と1に設定されています。 (1、1)
位置から:ここ
(0、4、0)の位置からのスクリーンショットである
基本的に、ズームアウトするだけです。あなたはオブジェクトに近すぎて、カメラスコープから外れているので、いくつかのポリゴンは描画されません。面の近くの値を変更すると、クリッピングが始まる距離から変更できます。より詳細な情報を得るためのリンク例を追加します。 –
はい、MinDepthをゼロに近い値に変更し、結果にどのように影響するかを確認してください。また、カメラを少し遠くに置くこともできます。 –
うーん、おそらくあなたはこのような問題を抱えています。受け入れられた答えを確認してください。 http://gamedev.stackexchange.com/questions/113803/does-direct3d-11-enable-z-clipping-discard-by-default –