glMapBuffer에서 std :: vector로 매핑 된 메모리의 범위를 관리하는 것이 좋습니다.std :: vector로 매핑 된 메모리 (glMapBuffer)를 관리하십시오.
// map data to ptr
T* dataPtr = (T*)glMapBuffer(this->target, access);
[... debug code ...]
// try to construct a std::vector from dataPtr
T* dataPtrLast = dataPtr + size;
mappedVector = new std::vector<T>(dataPtr, dataPtrLast);
문제는 메모리 범위가 직접적으로 사용되지는 않지만 벡터에 복사된다는 것입니다.
제 질문은 벡터가 매핑 된 메모리 범위를 '사용'하게 만들 수 있습니까? (이상적으로는 resize/reserve에 예외를 던지십시오) 또는 이것을 수행하는 다른 표준 컨테이너가 있습니까?
친절 감사, 플로리안
이 부분이 잘 보입니다. 정확히 무엇이 당신을 좋은 생각이라고 생각하게 만들 었는지 궁금하지 않는 한, 추가 할 것이 아무것도 없다고 생각합니까? 내가 아는 바로는 C++ 98 스펙은 벡터의 연속 저장을 보장하지 않습니다. (비록 최근 제안 된 개정판이 그것을 분명히하고 있지만) – wrosecrans
C++ 98은 오래전 일입니다. C++ 03은 벡터의 연속적인 저장을 보장합니다. 그 기준은 적용 가능합니다. – Puppy
Ok ... 나는 이 맵핑 된 메모리 범위에서 작업하기 위해 벡터의 깨끗한 인터페이스를 갖는 것이 좋을 것이라고 생각했다./ – fho