소개
게시글
질문&답변
셰이더 VS_Main에서 행렬 곱해줄 때
뷰 스페이스에서 계산하는 이유는 뷰 스페이스가 카메라의 위치를 원점으로 삼기 때문입니다. 그렇기 때문에 퐁 조명모델에서 정반사광 연산을 위해 카메라 위치를 별도로 받아올 필요가 없는 것이죠.이유는 딱 그거 하나밖에 없습니다.
- 0
- 2
- 340
질문&답변
#include wrl.h 헤더를 사용하면 에러가납니다
https://docs.microsoft.com/en-us/cpp/error-messages/compiler-errors-1/compiler-error-c2027?view=msvc-170 가서 보시면 아시겠지만 정의되지 않은 타입을 사용했다고 합니다. 즉 include를 제대로 했는지 확인하시면 됩니다.
- 0
- 2
- 419
질문&답변
shader의 blob관련 질문 드립니다.
쉐이더를 만들때 즉 CreateShader 부분에서 D3D 컴파일 시 HResult 아웃풋을 줍니다. 그때 그 HResult의 에러코드를 확인하면 어떤 종류의 문제인지 알수 있습니다. HRESULT result = ::D3DCompileFromFile(path.c_str(), nullptr, D3D_COMPILE_STANDARD_FILE_INCLUDE, name.c_str(), version.c_str(), compile_flag, 0, &blob, &m_err_blob); 이런 형태로 result 아웃풋을 받고, result의 에러를 확인하세요. 대부분의 경우엔 경로 문제거나 쉐이더 컴파일 에러 등등으로 예상됩니다.
- 0
- 2
- 360
질문&답변
WinApi에 대해
아니요. 별로 중요하지 않습니다. 다만 간단한 정도는 누구나 손쉽게 할수 있기 때문에 그걸 사용합니다. win32 api 외에도, SDL이나 SFML, GLFW, UWP 등등 여러 라이브러리의 일부를 사용하는 경우도 있습니다.
- 0
- 2
- 810
질문&답변
프레임 및 텍스쳐 관련 질문입니다
1. V Sync가 걸리는건 DirectX 12의 스왑체인 초기화 도중에 Vsync 옵션을 건드린게 아닌가 확인하시면 됩니다. 스왑체인 디스크립션 구조체의 refresh rate 부분의 이 쪽 부분을 확인하시고, if (m_vsync_enabled) { swap_chain_desc.BufferDesc.RefreshRate.Numerator = m_numerator; swap_chain_desc.BufferDesc.RefreshRate.Denominator = m_denominator; //강의 파일 기준으로는 60과 1로 되어 있습니다. } else { swap_chain_desc.BufferDesc.RefreshRate.Numerator = 0; swap_chain_desc.BufferDesc.RefreshRate.Denominator = 1; } 그리고 스왑체인의 프레젠트 함수도 한번 확인해 보세요. if (m_vsync_enabled) { // Lock to screen refresh rate. m_swap_chain->Present(1, 0); //이렇게 되면 V싱크가 걸려버립니다. } else { // Present as fast as possible. m_swap_chain->Present(0, 0); } 만약 모두 강의파일과 같다면 다른 이유로 모니터 주사율에 맞춰질 가능성이 있습니다. (드라이버 제어판 및 관련 소프트웨어의 전역설정을 다시 확인해 보세요;;) 2. DDS 텍스처와 다른 텍스처의 로딩방식의 차이는 DDS 포맷의 경우 텍스처가 일반적인 그림파일이 담고 있는 정보 외에 다른 별도의 정보들을 가지고 있을수 있기 때문입니다. 밉맵 정보나 압축 방식 등등 여러가지로 알고 있습니다. 당연히 그걸 활용하는것도 렌더링 파이프라인과 에셋 파이프라인에 맞춰서 돌리기 때문에 그렇습니다. HDR 역시 HDR 데이터를 담고 있어야 하기 때문이고요. 사실 텍스처 포맷들은 각각의 구성이 다르기 때문에 확장자 마다 개개의 방법으로 로딩하는거라 보시면 됩니다.
- 0
- 2
- 316
질문&답변
z축 회전행렬에서 요소 m12,m21과 -sin θ 와 sinθ의 위치 질문드립니다
회전행렬은 방향 코사인 행렬을 계산하여 구해집니다. x'1축과 x1축과의 사이각을 (x1', x1) 이라 하고, 일반화 해서 xi'축과 xj 축 사이의 각을 (xi', xj) 라 해봅시다. 그렇게 되면 3차원의 경우 (x1', x2', x3') 과 (x1, x2, x3)의 총 9가지의 관계를 구할수 있습니다. 그래서 일반적인 3차원 회전행렬 L(람다)를 구할때 아래 처럼 구하게 됩니다. l11 = cos(x1', x1); l12 = cos(x1', x2); l13 = cos(x1', x3); l21 = cos(x2', x1); l22 = cos(x2', x2); l23 = cos(x2', x3); l31 = cos(x3', x1); l32 = cos(x3', x2); l33 = cos(x3', x3); 회전 행렬 람다는 (l11, l12, l13) (l21, l22, l23) (l31, l32, l33) 가 됩니다. 해당 관계의 특수 예들이 X축 회전행렬, Y축 회전 행렬, Z축 회전 행렬 등으로 표현하면 강의에 나온것처럼 됩니다.
- 0
- 3
- 280