Я работаю над проектом 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.