2012-07-28 2 views
1

많은 양의 텍스처를 XNA 게임용 메모리에로드 할 수 있고 메모리 예외가 발생하지 않을지 궁금합니다.XNA 게임에서 1.5GB 이상의 RAM을 사용하고 충돌하지 않을 수 있습니까?

특히 런타임 중에 파일 스트림의 텍스처를로드하십시오.

+0

왜해야할까요? – Cyral

+0

한 수준의 \ map \ demo에 대한 많은 수의 HiRes 텍스처. 왜 내가하지 않았을까? – user1306322

+0

나는 당신이 묻는 질문이 당신이 왜 그럴 수 없는지에 대한 이유 중 하나라고 생각합니다. 기본적으로 이는 단일 환경에 대한 텍스처 데이터의 터무니없는 양입니다. AAA 개발자조차도 메쉬 및 기타 자산을 반복 할뿐만 아니라 바둑판 식 및 LOD 텍스처가 사용되는 독점적 인 고급 엔진의 한계 내에서 작업해야합니다. –

답변

5

이 작업은 주소 지정이 가능한 시스템 메모리의 양과 관련이 없기 때문에 끔찍한 생각입니다. (위에서 언급 한 것처럼 XNA는 32 비트 라이브러리이므로 약 2GB로 제한됩니다).

렌더링하려면 텍스처가 그래픽 카드의 비디오 메모리에로드되어야합니다. 요즘 하이 엔드 데스크탑 그래픽 카드는 약 2-3GB를 가지고 있습니다. 저사양과 중급 카드는 상당히 적습니다. 이 메모리는 텍스처에만 사용되는 것이 아니라 버텍스 버퍼와 같이 비디오 카드에있는 모든 객체에 사용됩니다. 독점 모드로 실행하지 않으면이 메모리가 여러 응용 프로그램간에 공유 될 수 있습니다. 사용 가능한 비디오 메모리의 양을 초과하면 스와핑으로 인해 성능이 크게 저하됩니다.

(예 : AAA 게임을위한 초고속 그래픽 모드를 작성하는 등) 비디오 버퍼를 채우려는 의도가있는 경우 고급 메모리 어드레싱 기술을 사용해야합니다. Win32 API를 사용하거나 시스템 메모리에 복사본을 보관하지 않고 그래픽 장치에 텍스처를로드하십시오. 이러한 기술은 XNA의 범위를 벗어납니다.

+0

추가 정보로 단일 환경에서 그런 터무니없는 양의 텍스처 데이터를 구현하도록 설정 한 경우, 영역을 영역 화하고 오래된 텍스처를 언로드하여 적합한 위치에 뉴스를로드 할 수 있습니다. 크로스 오버에서의 성능 저하는 의심의 여지가 없지만 그래픽 메모리를 지속적으로 스와핑하면 성능이 지속적으로 향상되는 것보다 낫습니다. –

관련 문제