【问题标题】:DirectX 11.0 World TransformDirectX 11.0 世界变换
【发布时间】: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);
  • 不,我得到一个空白屏幕,什么都看不见。

标签: c++ directx


【解决方案1】:

问题在于变换类,它正在创建空白世界矩阵。

【讨论】:

    猜你喜欢
    • 2019-02-13
    • 2021-10-24
    • 1970-01-01
    • 2014-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-22
    • 1970-01-01
    相关资源
    最近更新 更多