C ++로 작성된 몇 가지 게임을 알고 있지만 예외는 사용하지 않습니다. C ++에서 메모리 할당 실패 처리는 일반적으로 std::bad_alloc예외를 중심으로하기 때문에 이러한 게임은 이러한 실패를 어떻게 처리합니까? 그들은 단순히 충돌합니까, 아니면 메모리 부족 오류를 처리하고 복구하는 다른 방법이 있습니까?
실제로는 여러 가지 관련 질문이 있습니다. 렌더링 파이프 라인을 진행하는 동안 압축 텍스처 (dxt5 / dxt1 등)가 완전히 압축 해제 되었습니까? 첫 번째 질문에 대한 답이 사실이라면, 여러 개의 비 압축 텍스처에 대해 메모리가 어떻게 관리됩니까? 최신 GPU에서 프레임 버퍼가 VRAM과 다른가요?
Book Game Coding Complete, Fourth Edition , chapter 5 ( Game Initialization and Shutdown ), Checking Memory 섹션 에는이 흥미로운 코드 샘플이 포함되어 있습니다. bool CheckMemory(const DWORDLONG physicalRAMNeeded, const DWORDLONG virtualRAMNeeded) { MEMORYSTATUSEX status; GlobalMemoryStatusEx(&status); if (status.ullTotalPhys < physicalRAMNeeded) { // you don’t have enough physical memory. Tell the player …
범위가 잘 정의 된 게임에서는이 작업이 쉬울 수 있지만 플레이어가 무엇이든 만들거나 만들 수있는 샌드 박스 게임에 대한 문제입니다 . 가능한 기술 : 상한이있는 메모리 풀을 사용하십시오. 더 이상 주기적으로 필요하지 않은 개체를 삭제하십시오. 처음에 여분의 메모리를 할당하여 나중에 복구 메커니즘으로 해제 할 수 있습니다. 나는 약 2-4MB를 말할 것입니다. …
휴무 . 이 질문은 더 집중되어야 합니다. 현재 답변을받지 않습니다. 이 질문을 개선하고 싶습니까? 이 게시물 을 편집 하여 한 가지 문제에만 집중할 수 있도록 질문을 업데이트하십시오 . 휴일 육년 전 . 저는 초보자 그래픽 프로그래머이며 최근 궁금해 왔습니다. 모델 데이터 (메시 및 재료)가 응용 프로그램 (CPU 메모리)에서 그래픽 카드 …
많은 Minecraft 클론이 있으며 내 구현을 위해 노력하고 있습니다. 지형 렌더링의 원칙은 지역화 된 변경 노력을 줄이기 위해 전 세계를 고정 크기 청크로 묶는 것입니다. Minecraft에서 청크 크기는 지금까지 16 x 16 x 256입니다. 그리고 클론에서 나는 항상 2의 거듭 제곱 크기의 덩어리를 보았습니다. 성능이나 메모리와 관련된 이유가 있습니까? 나는 …
(2D) 게임의 메모리 풋 프린트는 텍스처를로드 할 때마다 증가하는 것 같습니다. 54MB 전용 RAM. 같은 거리를 이동 한 후 두 점 사이를 반복해서 앞뒤로 이동 한 후에도 같은 일이 발생합니다. 그러나 내 판독 결과는 텍스처가 화면을 벗어난 후 약 1 초 정도 프로그램이 glDeleteTextures를 올바르게 호출하고 있음을 보여줍니다. valgrind는 누수를 …
게임 프로그래밍, 특히 3D 오픈 월드 게임과 관련된 거의 모든 리소스는 디스크, 시스템 메모리 및 비디오 메모리에서 자산을 지속적으로 언로드하고 다시로드하는 방법에 대해 설명합니다. 콘솔에서이를 이해할 수 있습니다. 오버플로를 처리 할 수없는 매우 간단한 메모리 관리 체계가 있기 때문입니다. 그러나 PC에서는 상황이 매우 다릅니다. 시스템 메모리를 위해 OS에서 제공하는 가상 …