【发布时间】:2018-05-22 19:16:51
【问题描述】:
当我将世界 XMMatrix 作为身份矩阵传递时,我试图在世界空间中渲染一个立方体,立方体被渲染得很好:
/************************ TRANSFORM.CPP *********************/
m_position = { 0.0f,0.0f,0.0f };
m_scale = { 1.0f,1.0f,1.0f };
DirectX::XMStoreFloat4x4(&m_matrix_translation ,
DirectX::XMMatrixTranslation(m_position.x, m_position.y, m_position.z));
DirectX::XMStoreFloat4x4(&m_matrix_scalar,DirectX::XMMatrixScaling(m_scale.x, m_scale.y, m_scale.z));
/************************* RENDER.CPP ***********************************/
DirectX::XMMATRIX view = gp_MainCameraH->GetXM_View();
DirectX::XMMATRIX world = GetXM_Scalar() * GetXM_Translation(); // if this is kept as Identity matrix , the cube gets rendered fine ( first image)
DirectX::XMMATRIX proj = gp_MainCameraH->GetXM_Projection();
DirectX::XMMATRIX vp = view * proj;
DirectX::XMMATRIX wvp = world * vp;
// Set the constant buffer of the shader
RenderStateManager::GetEffectVariable("gWorldViewProj")->SetMatrix(reinterpret_cast<float*>(&(wvp)));
【问题讨论】:
-
最后一部分应该是
wvp = ::DirectX::XMMatrixTranspose((world * view) * proj); -
不,我得到一个空白屏幕,什么都看不见。