을 사용하는 일부 DirectX C++ 코드가 있습니다.바이너리 '-': 'DirectX :: XMVECTOR'가이 연산자 또는 변환을 정의하지 않습니다 (xnamath에서 DirectXMath 로의 마이그레이션이 쉽지 않음)
DirectX::XMFLOAT3 vector;
내가했다 : 나는 또한 DirectX
네임 스페이스, 예를 추가 한
#include <xnamath.h>
#include <DirectXMath.h>
에 : 나는 "새로운 브랜드"
DirectXMath
로 마이그레이션 싶어서 변경했습니다 고난을 당할 준비가되어 있습니다.
error C2676: binary '-' : 'DirectX::XMVECTOR' does not define this operator
or a conversion to a type acceptable to the predefined operator
라인에 대한 xnamth.h
을 위해 잘 작동 : 난 정말 그것을 해결하는 방법을 모른다
DirectX::XMVECTOR RayDir = CursorObjectSpace - RayOrigin;
컴파일시
, 나는 오류을 얻었다. operator-
이 더 이상 "지원되지 않습니다"라고 생각하지 않습니다. 이 오류와 그 원인을 해결할 수있는 방법은 무엇입니까?
여기 더 복잡한 소스 코드 :
DirectX::XMVECTOR RayOrigin = DirectX::XMVectorSet(cPos.getX(), cPos.getY(), cPos.getZ(), 0.0f);
POINT mouse;
GetCursorPos(&mouse);
DirectX::XMVECTOR CursorScreenSpace = DirectX::XMVectorSet(mouse.x, mouse.y, 0.0f, 0.0f);
RECT windowRect;
GetWindowRect(*hwnd, &windowRect);
DirectX::XMVECTOR CursorObjectSpace = XMVector3Unproject(CursorScreenSpace, windowRect.left, windowRect.top, screenSize.getX(), screenSize.getY(), 0.0f, 1.0f, XMLoadFloat4x4(&activeCamera->getProjection()), XMLoadFloat4x4(&activeCamera->getView()), DirectX::XMMatrixIdentity());
DirectX::XMVECTOR RayDir = CursorObjectSpace - RayOrigin;
내가 일하고 있어요 64 윈도우 7에, 프로젝트의 목표는 X32 디버그이며 지금까지 xnamath.h
을 위해 좋은 일했다.
DirectX::XMVECTOR RayDir = DirectX::XMVectorSet(//write more, do less..
DirectX::XMVectorGetX(CursorObjectSpace) - DirectX::XMVectorGetX(RayOrigin),
DirectX::XMVectorGetY(CursorObjectSpace) - DirectX::XMVectorGetY(RayOrigin),
DirectX::XMVectorGetZ(CursorObjectSpace) - DirectX::XMVectorGetZ(RayOrigin),
DirectX::XMVectorGetW(CursorObjectSpace) - DirectX::XMVectorGetW(RayOrigin)
); //oh my God, I'm so creepy solution
그러나 김 오싹 xnamath
위해 일 이전에 비교 :
실무 솔루션이 될 것 내가 정말이의 믿지 않는
XMVECTOR RayDir = CursorObjectSpace - RayOrigin;
을 유일한 방법과 난 그냥 operator-
위와 같은 사용할 수 없습니다.
operator/
에 대해서도 똑같은 문제가 발생합니다.
당신은'CursorObjectSpace'와'RayOrigin' 두 유형 '의 DirectX 것을 확신 :: XMVECTOR'? – ciamej
저는 100 % 확신합니다. 복잡한 코드도 게시했습니다. 여기에서'CursorObjectSpace'와'RayOrigin' 선언을 볼 수 있습니다. – PolGraphic
['SimpleMath'] (http://blogs.msdn.com/b/shawnhar/archive/2013/01/08/simplemath-a-simplified-wrapper-for-directxmath.aspx)를 사용하는 것이 현명 할 수도 있습니다 , 훨씬 쉽습니다. –