2015-01-01 1 views
0

GPU 읽기 속도와 CPU 쓰기 (프레임 당 한 번 또는 한 번만 표시)의 측면에서이 둘의 차이점을 찾고있었습니다. 내가 D3D11_USAGE_DYNAMIC 원인 데이터를 업데이 트되지 않습니다> 사용하고 싶지 않아 = 프레임 당 한 번.
Default 버퍼보다 ​​Default + Staging 조합의 성능이 크게 향상 되었습니까?DirectX 정점 버퍼 기본값과 기본값 + 스테이징

답변

1

Direct3D 11의 성능에 대한 최상의 조언은 실제로 Direct3D 10.0과 동일합니다. 이 이야기를 Gamefest 2007의 Windows to Reality: Getting the Most out of Direct3D 10 Graphics in Your Games에서 검토하십시오.

질문에 따라 자원 (텍스처 또는 버퍼)에 대한 업데이트는 성능상의 잠재적 인 영향을 미치지 만 '가끔 업데이트'의 경우 가장 좋은 옵션은 STAGING 자원을 사용하고 실제 렌더링을 위해서는 CopyResource을 DEFAULT 자원에 연결하십시오.

DYNAMIC은 텍스처 업데이트를 위해 매우 빈번한 업데이트 (예 : 비디오 텍스처 재생)와 동적 드래그 제출을 수행 할 때 정점 버퍼 용으로 예약해야합니다. 상수 버퍼는 실제적으로 DYNAMIC이거나, 업데이트 패턴에 따라 달라지는 UpdateSubresource을 사용합니다 (위의 대화에서 다루는 주제).

IMMUTABLE 및 pInitialData와 같은 리소스를 만드는 것이 가능한 경우 드라이버가 멀티 스레드 리소스 생성을위한보다 효율적인 기회를 제공하므로 DirectX 11에서 최상의 옵션입니다.

이 패턴의 주된 점은 STAGING 리소스로 인해 32 비트 (X86) 응용 프로그램에서 문제가 될 수있는 가상 메모리 조각화가 발생할 수 있으므로이를 사용하지 말고 사용하려고해야한다는 것입니다. 그들 중 많은 사람들이 그들을 파괴하고 그들을 재창조합니다. 이 blog 게시물에 첨부 된 "Windows 게임이 2,147,352,576 바이트로 실행되지 않는 이유"를 참조하십시오.

초기 버전은 DEAFAULT+UpdateSubresource을 사용하고 콘텐츠 및 코드에 크게 의존하기 때문에 DEAULT+STAGING+CopyResource 솔루션과 비교하는 것이 좋습니다.

+0

당신은 나에게 고급 기술, 대개 번개와 애님에 대해 논의 할 중급/고급 서적을 제안 해 주실 수 있습니까? 객체 팁? – Quest