[DX11 입문 서문] 안녕하세요. boxdemo 실행 질문 드립니다.

GPG 시리즈 관련 질답, 논의 공간.

Moderator: 류광

ghoflvhxj

안녕하세요. boxdemo 실행 질문 드립니다.

Post by ghoflvhxj »

윈도우10이기 때문에 Visual Studio2017과 Window SDK를 사용하여 서문에 예제를 실행했습니다.
원래는 책에 나온데로 따라 했지만 안되길래 인터넷에 검색해보니, 윈도우8 이후로 책의 내용과는 좀 달라졌더군요

어찌어찌 해서 어떻게든 실행은 성공했는데, 다음과 같이 오류가 뜬 후에 실행이 되는데
왜 그런지 잘 모르겠습니다. 초면에 죄송하지만 gpgstudy 형님들의 지식과 도움이 필요합니다 도와주세요!
Image
Image

아래 주소는 제가 어떻게 했는지 과정을 적은것인데
어떤 부분에서 오류가 있었는지 찾는데 도움이 될 거 같아 올려보겠습니다

https://blog.naver.com/ghoflvhxj/221482220064
류광
Posts: 3805
Joined: 2001-07-25 09:00
Location: GPGstudy
Contact:

Re: 안녕하세요. boxdemo 실행 질문 드립니다.

Post by 류광 »

와 2010 June SDK 없이 해내셨군요! 마지막 오류는 일단 오류 메시지 자체가 미스테리인데 프로젝트의 문자 집합 설정과 관련이 있을지도 모르겠네요. 주말에 링크하신 블로그 보고 한 번 따라해 보겠습니다.
ghoflvhxj

Re: 안녕하세요. boxdemo 실행 질문 드립니다.

Post by ghoflvhxj »

감사합니다!
류광
Posts: 3805
Joined: 2001-07-25 09:00
Location: GPGstudy
Contact:

Re: 안녕하세요. boxdemo 실행 질문 드립니다.

Post by 류광 »

저도 어찌어찌해서 실행에 성공했습니다. 마지막 오류의 깨진 문자열은 문자 형식과 관련된 문제였는데요. void BoxApp::BuildFX() 에서 D3DComileFromFile() 호출 후 오류 여부에 따라 메시지 상자를 띄우는 부분을 다음과 같이 변경하면 영문으로 된 메시지가 제대로 표시됩니다.

Code: Select all

// MessageBox(0, (LPCWCHAR)compilationMsgs->GetBufferPointer(), 0, 0);
MessageBoxA(0, static_cast<char*>(compilationMsgs->GetBufferPointer()), 0, 0);
제 경우는 효과 파일의 #include 문제와 관련된 오류 때문에 효과 파일이 아예 컴파일되지 않아서 실행이 멈추었는데, https://gpgstudy.com/forum/viewtopic.php?t=25475 에 언급된 문제였습니다. D3DCompileFromFile()의 셋째 인수로 0 대신 D3D_COMPILE_STANDARD_FILE_INCLUDE를 지정해서 해결했고요.

그 후에는 "warning X4717: Effects deprecated for D3DCompiler_47"이라는 경고 메시지가 뜨는데, 비회원 님이 보신 메시지가 아마 이것일 것입니다. 이 문제는 전에 몇 번 언급된 적이 있습니다(https://gpgstudy.com/forum/viewtopic.ph ... 94#p127794 등).

이 경고 메시지는 실행에는 별 영향이 없는, 말 그대로 경고인 것으로 보입니다. 예를 들어 저는 D3DCompileFromFile() 호출을 아래처럼 HR()로 감쌌는데, 셰이더 #include 문제로 오류가 났을 때는 HR()이 오류 메시지를 표시했지만, warning X4717 상황에 대해서는 HR()이 그냥 잘 넘어갔습니다.

Code: Select all

	HR(D3DCompileFromFile(L"FX/color.fx", 0, D3D_COMPILE_STANDARD_FILE_INCLUDE, 0, 
		"fx_5_0", shaderFlags, 0, &compiledShader, &compilationMsgs));
이 점을 생각하면, 셰이더 컴파일 오류 여부를 지금처럼 compilationMsgs에 뭔가 들어 있는지를 기준으로 판단하는 대신 compiledShader가 널 포인터인지로 판단하는 게 나을 것 같습니다.
ghoflvhxj

Re: 안녕하세요. boxdemo 실행 질문 드립니다.

Post by ghoflvhxj »

역시 내공이 엄청나시네요. 감사합니다.
이거 하느라고 여러 사람들이 고생하네요 ㅎㅎ
Post Reply