2017-11-14 15 views
0

저는 DirectX 12를 사용하여 Visual Studio에서 C++로이 게임을 개발했습니다. 개발 중에 디버그 빌드 구성을 사용했고 그래픽이 버터처럼 매끄러 웠습니다.DirectX 12 Release 빌드에서 배경이 내 메쉬를 통해 깜박 거리는 이유는 무엇입니까?

Windows 스토어에서 게임을 게시 할 준비가되었을 때 친구들과 게임 테스터로 공유 할 때 릴리스 구성으로 전환했습니다. 내가 그 일을 마칠 때마다, 나는이 배경 화면의 색이 깜박 거리면서 벽면의 메쉬를 통과하기 시작했다.

Here is a short video 깜박임을 나타냅니다. Here is a longer video 깜박임이 없다는 것을 보여주기 전에 릴리스 빌드 구성으로 전환하기 전에 만들었습니다.

전 DirectX 12를 처음 사용했습니다.이 프로젝트는 제 스승이었습니다. Microsoft의 Direct3D 12 Graphics을 공부하고 Visual Studio에서 DirectX 12 템플릿을 공부했습니다. DirectX 12를 잘 마스터 할 수있어서 기뻤습니다. 그런 다음 릴리스 물건과 깜박임 물건, 나는 손실에있어.

쉐이더 문제 일 가능성이 있습니까? 또는 명령 대기열에 문제가 있습니까? 또는 텍스처 문제? 또는 다른 것?

+0

여러 가지 일 수 있습니다. 일반 배경색이 노란색입니까? 그렇지 않으면 법선과 관련이있을 수 있습니다. 아마도 정점이 역방향으로 해석됩니다. 디버그 빌드와 릴리스 빌드간에 변경된 사항은 무엇입니까? – Slipoch

+0

@ Slipoch, 예, 일반적인 배경색은 노란색입니다. 나는 비디오를 위해 그것을 노랗게 만들었다. 그래서 눈에 would 것이다. 디버그 빌드와 릴리스 빌드 간의 유일한 중요한 차이점은 vcxproj 파일에 있으며 디버그 섹션에는' true'및'> false'이 있으며 릴리스 섹션에는 ' false'및' true'을 참조하십시오. –

+0

중요한 차이 만? 그래서이 두 라인을 다시 변경하면 플리커가 사라집니다. – Slipoch

답변

1

다이렉트 X 12 그래픽 전문가를 위해 설계된 API이며 확인을하고, 해당 컨트롤의 비용은 응용 프로그램 개발자가 모든 권리를 취득하는 당신이다 Direct3D를 11 말에 비해 응용 프로그램 제어의 큰 거래를 제공합니다 광범위한 하드웨어에서 작동하며 스트레스 시나리오 및 오류 사례를 모두 강력하게 처리합니다.

DirectX 12에서 '깜박임'효과를 얻는 데는 여러 가지 방법이 있습니다. 일반적으로 Draw을 호출 할 때와 상수, IBs, VBs 등을 사용하여 그래픽 메모리를 변경하지 않고 실제 시간 몇 프레임 후에 종종 발생하는 GPU에서 그리기가 완료됩니다. 이 동기화는 API를 올바르게 사용하기위한 핵심 과제입니다. 예제 솔루션을 보려면 GraphicsMemory (DirectX Tool Kit for DirectX 12)을 참조하십시오.

의 DirectX 개발을 처음 사용하는 경우 난 강력 등, 그것은 기본적으로 같은 기능이지만, 버퍼 이름 바꾸기, 자원 장벽, 울타리, VRAM 오버 커밋을 담당 다이렉트 X 11로 시작하는 조언

+0

이것이 문제인 경우 릴리스 라이브러리와 함께 디버그 라이브러리에서 발생하지 않습니까? – Slipoch

+0

타이밍 관련 문제가있을 수도 있고 그렇지 않을 수도 있습니다. –