인프런 커뮤니티 질문&답변

작성자 없음

작성자 정보가 삭제된 글입니다.

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12

삼각형 띄우기

Shader 관련 문제

작성

·

66

·

수정됨

0

Shader::Init을 할 때 마지막 줄

DEVICE->Create...State(&m_PipelineDesc, IID_PPV_ARGS(&m_PipelineState));

여기에서 desc세팅까지는 성공적으로 다 되는데 이 줄에서 state가 세팅되지 않고 NULL값으로 그대로 남아있습니다.

혹시 몰라서 오타 검사나 프로젝트 속성이 다른지 체크했는데 이상 없었습니다.

image.png

[코드]

image.png

[로컬 데이터]

 

(추가)

  • 엔진.h의 멤버들은 정상적으로 초기화 되고 올려주신 파일을 실행했을 때는 정상적으로 작동하였습니다.

  • Shader에서 문제가 있는거 같은데 코드상 차이는 안보입니다. 올려주신 코드내용을 복붙해도 같은 문제가 발생합니다.

  • 가끔씩 shader->Update()에 들어가기 전에 엑세스 위반 오류가 생깁니다

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

민트초코빙수님의 문제는 Shader 초기화 시 CreateGraphicsPipelineState 호출에서 파이프라인 상태 객체가 NULL로 남아있는 문제와 관련되어 있습니다. 유사한 이슈 및 DirectX12 초기화 문제들에 대해 기존 질문과 답변을 참고하시면 해결에 도움이 될 것입니다.

장치 초기화와 관련된 기존 질문과 답변을 아래에 안내 드립니다:

  1. this->cmdListptr 이 nullptr

    • 요약: 프로그램 실행 시 cmdListptrnullptr가 되어 읽기 액세스 위반 오류가 발생. 이는 커맨드 리스트 객체가 제대로 생성되지 않아 발생하는 문제일 수 있습니다. 디버깅을 통해 어느 부분에서 초기화에 실패했는지를 살펴볼 필요가 있습니다.
  2. 그래픽카드와 d3d12.h 컴파일 관련

    • 요약: 오래된 노트북의 그래픽 카드가 DirectX12를 지원하지 않아 D3D12CreateDevice 함수 호출이 실패하는 문제. DirectX12를 지원하지 않는 그래픽 카드에서는 개발도 어려울 수 있다는 점을 명시.
  3. 선생님 질문있어요

    • 요약: 초기화 과정에서 필요한 자원 및 뷰 객체의 생성을 상세히 설명하며, 전체적인 DirectX12 파이프라인 구성을 설명.

고려해볼 해결책:
- 디버깅: 각 객체가 제대로 생성되었는지(예: DEVICE, m_PipelineDesc) 디버깅 모드를 통해 확인하세요.
- 환경설정: 프로젝트 속성 및 DirectX12 설정이 올바르게 구성되었는지 확인하세요.
- 샘플 코드 비교: 제공된 강의 샘플 코드와 자신의 코드를 비교하여 차이점을 확인하세요.

제가 추천드린 답변 링크를 참조하시면서 문제를 해결해 보시길 바랍니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

DirectX12도 정상적(혹시 몰라서 재설치)이고 샘플 코드와 비교해도 모두 동일하게 되어있습니다.

파일 비교를 하다가 굳이 다른걸 찾자면 비주얼 스튜디오 버전이나 솔류션 가이드버전이 서로 다르다? 정도입니다.... 어떻게 해야될까요

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기