-
카테고리
-
세부 분야
게임 프로그래밍
-
해결 여부
미해결
shader의 blob관련 질문 드립니다.
22.01.11 21:22 작성 조회수 264
0
이전 Texture 강의 들으며 실습할 때까지는 문제가 없었는데 DepthStencilBuffer 강의를 들으며 실습한 후 Engine을 빌드하는 것 까지는 성공하였습니다.
그런데 디버그할 시에 blob이 null이어서 예외가 발생하는데 무엇이 문제일까요? 디버깅하며 확인해보니 Shader.h의 멤버변수로 선언된 _vs, _ps, _err 모두 아래와 같이 null값이 저장되어 있습니다.
연관이 있는지는 모르겠지만 아래와 같은 경고가 함께 뜨는데 이것과 연관이 있는 것일까요?
답변을 작성해보세요.
1
Rookiss
지식공유자2022.01.13
위 내용만으로는 알기가 힘듭니다.
강의 코드를 그대로 복붙해봐도 동일한 문제가 발생하는지
조금씩 줄여가며 범인을 색출해야 할 것으로 보입니다.
_vsBlob = 로 만들 때 breakpoint를 걸어보거나,
로그 메시지가 없는지 확인이 필요할 것 같네요.
쏘씩오브럽송
질문자2022.01.13
올려주신 코드의 솔루션을 실행하면 문제없이 실행 되는데 코드를 제가 만든 프로젝트로 복붙해서 사용하는 건 위와 같이 오류가 발생하네요 ㅜㅜ 여러 가지 시도해보면서 찾아보겠습니다. 감사합니다~
Rookiss
지식공유자2022.01.13
위로를 드리자면 저도 강의를 만들 때 이런 류의 문제를 100번은 만났습니다 ㅎㅎㅎ
정말 사소한 문제이거나 뭔가 경로가 잘못 되었거나 등 다양한 이유가 있을 수 있으니 무운을 빕니다
0
한장석
2022.01.14
쉐이더를 만들때 즉 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의 에러를 확인하세요.
대부분의 경우엔 경로 문제거나 쉐이더 컴파일 에러 등등으로 예상됩니다.
답변 2