我最近写了一个矩阵类来处理 XMFloat4x4 和 XMVector 转换。它在 Windows 8 Metro 应用程序上运行良好,但是当我尝试将其移植到Win32 Windows 应用程序时,它开始出现错误
"error C2593: 'operator *' is ambiguous c:\program files (x86)\windows kits\8.1\include\um\DirectXMathMisc.inl",其中很多错误与多个重载实例有关函数 XMFunctions
包含“DirectXMath.h”时会出现问题
请让我知道出了什么问题
MATRIX4X4.h
#pragma once
#include <btBulletCollisionCommon.h>
#include <cmath>
#include <DirectXMath.h>
using namespace DirectX;
#define _USE_MATH_DEFINES
class MATRIX4X4
{
private:
XMFLOAT4X4 _m;
public:
MATRIX4X4();
MATRIX4X4(const XMFLOAT4X4 &data);
MATRIX4X4(float* data);
void InitializeIdentity();
MATRIX4X4& InitTranslation(float x, float y, float z);
MATRIX4X4& InitTranslation(const XMFLOAT3 &pos);
MATRIX4X4& InitScaling(float x, float y, float z);
MATRIX4X4& InitScaling(const XMFLOAT3 &scl);
MATRIX4X4& InitRotation(float x, float y, float z);
MATRIX4X4& InitRotation(const XMVECTOR &quaternion);
MATRIX4X4& InitPerspective(float minimumFieldOfView, float aspectRatio, float nearPlane, float farPlane);
MATRIX4X4& InitOrthographic(float left, float right, float bottom, float top, float nearPlane, float farPlane);
MATRIX4X4& InitView(const XMFLOAT3 &eyePosition, const XMFLOAT3 &lookPosition, const XMFLOAT3 &up);
MATRIX4X4& SetTranslation(float x, float y, float z);
MATRIX4X4& SetTranslation(const XMFLOAT3 &pos);
MATRIX4X4& Translate(float dx, float dy, float dz);
MATRIX4X4& Translate(const XMFLOAT3 &dp);
MATRIX4X4& SetScale(float x, float y, float z);
MATRIX4X4& SetScale(const XMFLOAT3 &scl);
MATRIX4X4& Scale(float dx, float dy, float dz);
MATRIX4X4& Scale(const XMFLOAT3 &ds);
MATRIX4X4& SetRotation(float x, float y, float z);
MATRIX4X4& SetRotation(const XMFLOAT3 &rot);
MATRIX4X4& SetRotation(const XMVECTOR &quaternion);
MATRIX4X4& Rotate(float dx, float dy, float dz);
MATRIX4X4& Rotate(const XMFLOAT3 &dr);
MATRIX4X4& Rotate(const XMVECTOR &quaternion);
MATRIX4X4& operator* (MATRIX4X4 mat);
MATRIX4X4& operator*= (MATRIX4X4 mat);
void LookAt(const XMFLOAT3& position, const XMFLOAT3& target, const XMFLOAT3& up);
// for bulllet physics //
MATRIX4X4& Translate(const btVector3 &dp);
MATRIX4X4& SetTranslation(const btVector3 &pos);
MATRIX4X4& Scale(const btVector3 &ds);
MATRIX4X4& SetScale(const btVector3 &scl);
MATRIX4X4& Rotate(const btQuaternion &quaternion);
MATRIX4X4& SetRotation(const btQuaternion &quaternion);
/////////////////////////
const XMFLOAT4X4& GetData() const;
const XMFLOAT3& GetTranslation() const;
const XMFLOAT3& GetScale() const;
const XMVECTOR& GetRotation() const;
};