Оптимизировать выделение объектов в стеке с помощью XNAMATH

Недавно я начал профилировать и оптимизировать приложение DirectX 11, которое исторически разрабатывалось с использованием конфигурации платформы x64. После перехода на x86 для тестирования поведения при использовании расширенных наборов инструкций я начал замечать, что некоторые мои объекты были оптимизированы, в частности, объекты XMMATRIX, расположенные в стеке. Это происходит только при сборке в конфигурации выпуска x86 (работает нормально в выпуске x64), и я обеспечил связь с правильными библиотеками. Я также протестировал новый проект, чтобы убедиться, что случайно не изменил настройку скрытого проекта. Я убедился, что отключение оптимизации кода C ++ решает проблему. Существуют ли какие-то особые требования к использованию, которые я упустил при попытке использовать библиотеку XNAMATH при разработке для платформы Windows x86?

обновлен фрагмент кода

class Camera : public InputListener
{

public:
Camera();
~Camera();

/* Public functions here */
private:
XMMATRIX mViewMatrix;
XMMATRIX mInvView;
XMMATRIX mProjectionMatrix;
XMMATRIX mRotationMatrix;
XMVECTOR mPosition;
XMVECTOR mLookAt;

/* Other variables and private funcctions here */

};Camera::Camera() : mViewMatrix(),
mProjectionMatrix(),
mRightHold(false),
mRotationMatrix(),
mPosition(),
/*other initializations*/
{
InputManager::GetInstance().RegisterListener(this);

mAspectRatio = (float)mViewWidth/(float)mViewHeight;

mProjectionMatrix = XMMatrixPerspectiveFovLH( mAngle, mAspectRatio, mNearClipDist, mFarClipDist );

mPosition = XMVectorSet( 0, 0, -100.0f,0.0f );
XMVECTOR Up = XMVectorSet( 0.0f, 1.0f, 0.0f, 0.0f );
mViewMatrix = XMMatrixLookAtLH(mPosition,XMVectorSet(0,0,0,0),Up);

mHeightReciprocal = 1/(float)mViewHeight;
mWidthReciprocal = 1/(float)mViewWidth;
mAngleTangent = tanf(mAngle * 0.5f);
}

0

Решение

Возможно, связано с аналогичной проблемой, которая была у меня с выравниванием памяти?

Сбой после m = XMMatrixIdentity () — aligment памяти в классах?
в-классах

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]