Tôi gặp vấn đề với ứng dụng Direct3D11 mà tôi đang cố giải quyết trong vài giờ rồi. Vấn đề là phương pháp mà:Ma trận gây ra tai nạn
void CameraClass::Render()
{
XMFLOAT3 sUp, sLookAt, sRotationInRadians;
sUp.x = 0.0f;
sUp.y = 1.0f;
sUp.z = 0.0f;
sLookAt.x = 0.0f;
sLookAt.y = 0.0f;
sLookAt.z = 1.0f;
sRotationInRadians.x = m_Rotation.x * 0.0174532925f;
sRotationInRadians.y = m_Rotation.y * 0.0174532925f;
sRotationInRadians.z = m_Rotation.z * 0.0174532925f;
XMVECTOR vecLookAt = XMVectorSet(sLookAt.x, sLookAt.y, sLookAt.z, 0.0f);
XMVECTOR vecUp = XMVectorSet(sUp.x, sUp.y, sUp.z, 0.0f);
XMVECTOR vecPosition = XMVectorSet(m_Position.x , m_Position.y, m_Position.z, 0.0f);
XMMATRIX RotationMatrix(XMMatrixRotationRollPitchYaw(sRotationInRadians.x, sRotationInRadians.y, sRotationInRadians.z));
vecLookAt = XMVector3TransformCoord(vecLookAt, RotationMatrix);
vecUp = XMVector3TransformCoord(vecUp, RotationMatrix);
vecLookAt += vecPosition;
m_ViewMatrix = XMMatrixLookAtLH(vecPosition, vecLookAt, vecUp);
}
Tất cả mọi thứ của tốt cho đến khi nó đạt đến dòng:
m_ViewMatrix = XMMatrixLookAtLH(vecPosition, vecLookAt, vecUp);
Bằng cách nào đó nó gây ra vụ tai nạn ứng dụng (công tắc để không đáp ứng được đúng).
Và đây là cách gọi thực tế như sau:
XMMATRIX ViewMatrix;
XMMATRIX ProjectionMatrix;
XMMATRIX WorldMatrix;
m_D3D->BeginScene(0.0f, 0.0f, 0.0f, 1.0f);
m_Camera->Render();
m_D3D->GetWorldMatrix(WorldMatrix);
m_D3D->GetProjectionMatrix(ProjectionMatrix);
Năm trước, Vertex và Pixel Shader biên dịch tốt, vì vậy đó không phải là một vấn đề. Hầu hết có lẽ tôi đang làm điều gì đó sai với xnamath (tôi hoàn toàn mới với nó), nhưng tôi không có ý tưởng những gì trên trái đất có thể được. Cảm ơn trước. Tôi sẽ cung cấp thêm thông tin nếu cần.
Chỉnh sửa @ 1: Với hàng chục thay đổi tôi đã quản lý để có được Phép chiếu và ma trận thế giới hoạt động. Mặc dù tôi vẫn không thể đặt ma trận Xem. Tôi đã thay đổi mã, vì vậy nó phù hợp với thực tế và đã loại bỏ những gì không quan trọng.
Chỉnh sửa @ 2: Tin tức mới nhất từ phút cuối: không có vấn đề với hàm XMMatrixLookAtLH, vì tôi quyết định lưu kết quả vào biến địa phương và nó hoạt động, nhưng nếu tôi muốn gán ma trận kết quả cho lớp thành viên sau đó tôi nhận được vụ tai nạn. Điều đó chắc chắn thú vị nhất.
Thử gỡ lỗi phương thức và xem giá trị của con trỏ m_ViewMAtrix là gì? –
Được rồi vì vậy tôi nhận được lỗi chính xác này. Mã chỉ bí ẩn bị treo khi nó cố gắng tính toán XMMatrixLookAtLH hoặc bất kỳ hàm XNA nào. – Caesar
Sau khi thử một số thứ, cuối cùng tôi đã làm việc đó bằng cách đặt chế độ của tôi thành bản dựng 64x.Vẫn đang tìm kiếm một câu trả lời về lý do tại sao điều đó xảy ra mặc dù. – Caesar