現在、ビデオ ゲーム + エンジンを作成しています。RasterTek で、DirectX 11 プログラミングに関する本当に素晴らしいチュートリアルをいくつか見つけました。残念ながら、彼らは廃止された DirectX SDK を使用しており、私は Windows SDK に含まれる新しい DirectX SDK で VS 2013 を使用しています。
Windows SDK を使用するようにコードを変換していますが、チュートリアル 4 でいくつかの問題に遭遇しました (はい、49 個のチュートリアルすべてを変換しますが、おそらくさらに多くの問題が発生するでしょう)。
D3DXMathの操作から、D3DXVECTOR3 を XMFLOAT3 に変換する必要があると言われました。次に、 XMVector3TransformCoord に変換されたD3DXVec3TransformCoordでこれらの XMFLOAT3 を使用しようとしています。
例:
XMFLOAT3 up, position, lookAt;
// Setup the vector that points upwards.
up.x = 0.0f
up.y = 1.0f
up.z = 0.0f
// Setup the position of the camera in the world.
position.x = m_positionX;
position.y = m_positionY;
position.z = m_positionZ;
// Setup where the camera is looking by default.
lookAt.x = 0.0f;
lookAt.y = 0.0f;
lookAt.z = 1.0f;
// Transform the lookAt and up vector by the rotation matrix so the view is correctly rotated at the origin.
XMVector3TransformCoord(lookAt, rotationMatrix);
XMVector3TransformCoord(up, rotationMatrix);
エラーが発生します:
IntelliSense: "DirectX::XMFLOAT3" から "DirectX::XMVECTOR" への適切なユーザー定義の変換が存在しません
XMLloadFloat3 を使用して、lookAt および up をTypeCastできることがわかりました。
XMVector3TransformCoord(XMLoadFloat3(&lookAt), rotationMatrix);
XMVector3TransformCoord(XMLoadFloat3(&up), rotationMatrix);
私はこれを行う必要がありますか、および/またはこれを行うための最良の方法はありますか?
これを行った後、次のことを試みます。
// Translate the rotated camera position to the location of the viewer.
lookAt = position + lookAt;
そしてエラーを取得します:
IntelliSense: これらのオペランドに一致する演算子 "+" はありません。オペランドの種類は次のとおりです: DirectX::XMFLOAT3 + DirectX::XMFLOAT3
D3DXVECTOR3 では + 演算子を使用できましたが、XMFLOAT3 では使用できませんか? これらを一緒に追加するにはどうすればよいですか?