我正在处理一个DX11项目,并使用静态函数得到一个奇怪的行为。我对静态函数有点没有教育,所以我可能在某个地方犯了错误。静态函数的意外行为
我的功能很简单:
namespace Rendering
{
static bool PlaceObjectInMatrix(EntityBase* obj, D3DXMATRIX world)
{
D3DXMatrixTranslation(&world, obj->GetPosition()->x, obj->GetPosition()->y, obj->GetPosition()->z);
return true;
}
}
,它被称为在循环中呈现的所有对象:
for(unsigned int i = 0; i < listSize; i++)
{
if(entities[i].taken == false)
continue;
entities[i].entry->Render(deviceContext, shader);
PlaceObjectInMatrix(entities[i].entry, worldMatrix);
if(entities[i].entry->GetIndexCount() != 0)
{
shader->Render(deviceContext, entities[i].entry->GetIndexCount(), worldMatrix, viewMatrix, projectionMatrix, entities[i].entry->GetTexture(), m_debugLight->GetDirection(), m_debugLight->GetDiffuseColor());
objectsRendered++;
}
d3d->GetWorldMatrix(worldMatrix); //reset world matrix
}
但是,这是行不通的。然而,当我用功能本身中的函数调用替换该行时,它确实起作用。这就像是在函数调用中迷失方向。
EntityBase类是抽象的,而我实际呈现的类称为EntityModelStatic,它是从EntityModel派生的。
因为我对Direct3D的了解不多,所以这只是一个建议:将'world'参数引用为'D3DXMATRIX& world'。 – Xeo