작성자 없음
작성자 정보가 삭제된 글입니다.
작성
·
473
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
sysy0512님의 질문에 대하여 답변 드립니다.
HLSL에서 행렬 곱셈을 할 때 순서가 매우 중요합니다. 보통 행렬 곱셈은 Local -> World -> View -> Projection 순서로 진행됩니다. 만약 g_matWVP와 g_matWV가 각각 World-View-Projection, World-View 행렬로 제공되었다면, 이 행렬들은 이미 적절한 순서로 곱해진 상태일 수 있습니다.
cbuffer에 row_major로 설정했음에도 불구하고 물체가 나타나지 않는다면, HLSL 내에서 행렬을 직접 곱할 때 계산 순서를 다시 확인해보시는 것이 좋습니다. 열 기반의 HLSL에서는 행렬을 곱할 때 오른쪽에서 왼쪽 순으로 곱하는 것을 기억하시고, 다음과 같은 순서로 곱셈을 해보세요.
Projection * View * World * Local
또한 DirectX 수학 라이브러리(DirectXMath)를 사용하실 때는 XMMatrixMultiply 함수를 사용하여 행렬을 곱할 수 있으며, 이 함수는 첫 번째 인자를 오른쪽 행렬, 두 번째 인자를 왼쪽 행렬로 고려합니다.
직접 계산 시 행렬 곱 순서를 확인하시고, 그래도 문제가 해결되지 않는다면 쉐이더 코드 내에서 행렬이 어떻게 적용되는지 디버깅을 통해 값을 검토해보시기 바랍니다.
도움이 되셨길 바라며, 추가적인 질문이 있으시면 언제든지 문의해 주세요.