Direct3D11 アプリケーションに奇妙な問題があり、既に数時間解決しようとしています。問題はその方法です:
void CameraClass::Render()
{
XMFLOAT3 sUp, sLookAt, sRotationInRadians;
sUp.x = 0.0f;
sUp.y = 1.0f;
sUp.z = 0.0f;
sLookAt.x = 0.0f;
sLookAt.y = 0.0f;
sLookAt.z = 1.0f;
sRotationInRadians.x = m_Rotation.x * 0.0174532925f;
sRotationInRadians.y = m_Rotation.y * 0.0174532925f;
sRotationInRadians.z = m_Rotation.z * 0.0174532925f;
XMVECTOR vecLookAt = XMVectorSet( sLookAt.x, sLookAt.y, sLookAt.z, 0.0f );
XMVECTOR vecUp = XMVectorSet( sUp.x, sUp.y, sUp.z, 0.0f );
XMVECTOR vecPosition = XMVectorSet( m_Position.x , m_Position.y, m_Position.z, 0.0f );
XMMATRIX RotationMatrix( XMMatrixRotationRollPitchYaw( sRotationInRadians.x, sRotationInRadians.y, sRotationInRadians.z ));
vecLookAt = XMVector3TransformCoord( vecLookAt, RotationMatrix );
vecUp = XMVector3TransformCoord( vecUp, RotationMatrix );
vecLookAt += vecPosition;
m_ViewMatrix = XMMatrixLookAtLH( vecPosition, vecLookAt, vecUp );
}
その行に到達するまで、すべて問題ありません。
m_ViewMatrix = XMMatrixLookAtLH( vecPosition, vecLookAt, vecUp );
どういうわけか、それはアプリケーションのクラッシュを引き起こします (正しいと応答しないように切り替えます)。
実際の呼び出しは次のようになります。
XMMATRIX ViewMatrix;
XMMATRIX ProjectionMatrix;
XMMATRIX WorldMatrix;
m_D3D->BeginScene( 0.0f, 0.0f, 0.0f, 1.0f );
m_Camera->Render();
m_D3D->GetWorldMatrix( WorldMatrix );
m_D3D->GetProjectionMatrix( ProjectionMatrix );
事前に、Vertex シェーダーと Pixel シェーダーは正常にコンパイルされるため、問題はありません。ほとんどの場合、私は xnamath で何か間違ったことをしています (私はまったく新しいものです) が、地球上で何ができるのかわかりません。前もって感謝します。必要に応じて、さらに情報を提供します。
編集@1: 数十回の変更により、Projection および World マトリックスを機能させることができました。私はまだビューマトリックスを設定できませんが。コードを変更したので、実際のものと一致し、重要でないものを取り除きました。
編集@2: 直前の速報: XMMatrixLookAtLH 関数に問題はありません。結果をローカル変数に保存することにしたため、機能しますが、結果マトリックスをクラス メンバーに割り当てたい場合は、クラッシュが発生します。 . それは確かに興味深いです。