2017-10-09 6 views
1

그렇다면, 즉석 모드 렌더링에 대한 질문 목록을 보았지만 그래픽 API (OpenGL/DirectX)에 저장된 장면 데이터를 RAM에 저장할지 또는 GPU의 메모리에 저장 할지를 지정하는 사람은 아무도 없습니다. 상식은 API가 장면 데이터를 GPU에 저장 하겠지만 온라인에서 직접 본 것은 아무것도 없습니다. 이는 API 내의 설정에 달려 있기 때문입니까?유지 된 모드 데이터가 GPU에 저장되어 있습니까?

내 질문은 다음과 같습니다. 유지 모드 그래픽에서 장면 데이터는 항상 GPU의 메모리에 저장되어 있습니까? 아니면 그래픽 API의 특정 설정에 따라 달라 집니까?

+1

확실히 API에 따라 다릅니다. 내가 이해하는 한, 유지 모드 API 중 하나가 드로잉을 위해 GPU를 사용한다는 보장조차 없다. – BDL

+0

그래서, ** OpenGL은 현재 OpenGL에서 기본 GPU가있는 경우 OpenGL에서 GPU의 모든 장면 데이터를 항상 저장합니까? (유지 모드에서는 물론, 최신 버전에서는 직접 모드가 존재하지 않기 때문에) – pIjIN

+1

GPU 메모리에 저장할 수 있습니다. 구현이 CPU 메모리에 저장하는 것이 더 나은 것으로 결정하지 않는 한 (예를 들어, 데이터가 CPU 메모리에 매핑되거나 GPU 메모리가 꽉 찼을 때). – BDL

답변

1

현대 OpenGL에서. 배열은 CPU 메모리 (RAM)에 저장된 일부 배열에 정점과 같은 데이터를 저장합니다. 이 같은 일을 할 때

이 장치 드라이버 영역의 메모리 핸들을 반환합니다. 따라서 장치 드라이버 메모리에 직접 데이터를 복사하면 데이터의 로컬 복사본을 피할 수 있습니다. 나중에 장치 드라이버가이 데이터를 그래픽 메모리로 옮깁니다. GL_STATIC_DRAW과 같은 설정에 따라 GL_DYNAMIC_DRAW 장치 드라이버가 어떤 메모리 (GPU 또는 CPU)를 선택해야하며 최적의 액세스를 위해 데이터 정렬 방법을 결정하십시오. 즉각적인 모드 (OpenGL)가 수행하는 작업

OpenGL의 이전 버전이 표시 목록이라고하는 것을 발견했습니다. 형상을 한 번 작성하고 표시 목록으로 컴파일하고 미리 컴파일 된 코드 만 사용하여 그릴 때마다 그릴 수 있습니다. 그래서 기능을 유지하는 것이있었습니다.

순수 유지 모드에서 API는 WPF와 마찬가지로 초기화와 같은 모든 주요 작업 부하를 관리합니다. 따라서 수명주기 관리는 API에 의해 수행되므로이 ​​조정에 대한 제어가 거의 없으므로 API에 따라 최적화 된 액세스를 위해 데이터가 저장됩니다 .

+0

GPU 메모리를 말할 필요가 없습니다. 당신이주의 깊게 읽으면 나는 운전자 기억을 언급하고있다. 드라이버가 GPU로 옮길 때 구현에 의존하고 OpenGL에 의한 것은 아닙니다. 그러나 드라이버 메모리에서 직접 물건을 가져 오는 것은 여전히 ​​최적화의 한 단계입니다. –

+1

입력 해 주셔서 감사합니다. –