用XNAMATH优化了堆栈分配对象



我最近开始分析和优化一个使用x64平台配置开发的DirectX 11应用程序。在切换到x86来测试使用扩展指令集时的行为之后,我开始注意到我的某些对象正在被优化,最具体的是堆栈分配的XMMATRIX对象。只有在x86版本配置中构建时才会发生这种情况(在x64版本中工作得很好),并且我已经确保链接到正确的库。我还测试了一个新项目,以确保我不会不小心更改隐藏的项目设置。我已经验证了关闭c++代码优化可以解决这个问题。在为Windows x86平台开发时,在尝试使用XNAMATH库时,我是否忽略了任何特定的使用要求?

用代码片段

更新
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);
 }

可能连接到一个类似的问题,我有内存对齐?

崩溃后m = XMMatrixIdentity() -在类对齐内存?课堂上的

相关内容

  • 没有找到相关文章

最新更新