그래픽 카드를 업그레이드할 때 프레임 속도가 감소하는 원인은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/56424

  •  09-06-2019
  •  | 
  •  

문제

이전에 NVIDIA 8400GS(256MB)를 사용하여 일관된 60FPS(모니터 동기화 속도)로 실행되었던 2화면 DirectX 응용 프로그램이 있습니다.그러나 512MB RAM이 있는 카드로 카드를 교체하면 프레임 속도가 40FPS를 초과하는 데 어려움을 겪습니다.(삼중 버퍼링을 사용하고 있기 때문에 이 정도 높이만 얻을 수 있습니다.) 두 카드는 동일한 제조업체(PNY)의 카드입니다.다른 모든 사항은 동일합니다. 이는 Windows XP Embedded 응용 프로그램이며 각 카드에 대한 새로운 이미지에서 시작했습니다.드라이버 버전 번호는 169.21입니다.

응용 프로그램은 모두 2D입니다.즉.텍스처가 있는 쿼드와 사전 렌더링된 그래픽이 잔뜩 있을 뿐입니다(따라서 카드 메모리를 업그레이드해야 함).또한 CPU가 즉시 디코딩하는 압축 애니메이션도 있습니다. 여기에는 텍스처 잠금이 포함됩니다.잠금에는 시간이 오래 걸리지만 CPU가 업데이트할 별도의 시스템 메모리 텍스처를 만든 다음 장치의 UpdateTexture 메서드를 사용하여 렌더링된 텍스처를 업데이트하려고 시도했습니다.전반적인 성능 차이는 없습니다.

DirectX 성능에 관해 인터넷에서 찾을 수 있는 모든 FAQ를 읽었지만 DirectX 프로젝트 작업은 이번이 처음이므로 여러분이 갖고 있는 신비한 지식이 있으면 도움이 될 것입니다.:)

제가 이 주제에 관해 이야기하는 동안 또 한 가지;스왑 체인에서 Present를 호출할 때 DirectX는 현재 매개변수(PresentationInterval)와 호출 자체의 플래그 모두에서 D3DPRESENT_DONOTWAIT를 사용하고 있다는 사실에 관계없이 현재가 완료될 때까지 기다리는 것 같습니다.이것은 두 화면 응용 프로그램이기 때문에 두 모니터가 젠록된 것으로 보이지 않기 때문에 문제가 됩니다. 스레드 풀을 통해 Present 호출을 실행하여 이 문제를 해결하고 있습니다.이것의 근본적인 원인은 무엇일까요?

도움이 되었습니까?

해결책

카드는 정확히 동일하고(두 GeForce 8400GS 모두) 메모리 크기만 다른가요?메모리 크기가 다르면 클럭 속도도 약간씩 달라지는 경우가 많습니다(예:더 많은 메모리를 가진 카드는 더 느린 메모리를 사용할 수 있습니다!).

따라서 가장 먼저 확인해야 할 것은 다음과 같은 것을 사용하여 GPU 코어 및 메모리 클럭 속도입니다. GPU-Z.

다른 팁

표면 잠금이 문제인지 확인하는 쉬운 테스트입니다. 텍스처 업데이트를 주석 처리하고 프레임 속도가 60hz로 돌아가는지 확인하세요.불행하게도 잠긴 표면에 글을 쓰고 리소스를 업데이트하면 성능이 저하되며 항상 그랬습니다.텍스처와 함께 밉맵을 사용하고 있습니까?DX9에 밉맵 자동 생성 기능이 추가되어 이를 생성하는 데 많은 시간이 걸릴 수 있다는 것을 알고 있습니다.각 프레임마다 동일한 리소스를 지속적으로 잠그는 경우 텍스처를 제외하고 삼중 버퍼링과 유사한 텍스처 풀을 생성해 볼 수도 있습니다.렌더링이 하나의 텍스처를 사용하도록 하고 다음 업데이트 시 렌더링에 사용되지 않는 풀에서 사용 가능한 다음 텍스처를 선택합니다.물론 메모리가 제한되어 있거나 애니메이션 텍스처와 유일한 차이점이 없다면 말이죠.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top