0
PBO가 매핑 될 때 glReadPixels에 대한 INVALID_OPERATION 오류를 테스트해야합니다. 그러나 버퍼 매핑 된 것을 얻지 못하는 것은 정확히 의미합니다. 코드 부분 따라 : 버퍼가 glMapBufferRange 매핑 될 때버퍼 매핑은 PBO의 의미는 무엇입니까?
glGenBuffers(1, iBufferObj);
// Bind the buffer
glBindBuffer(GL_PIXEL_PACK_BUFFER, *iBufferObj);
glBufferData(GL_PIXEL_PACK_BUFFER, iSize, 0, GL_STREAM_READ); // iSize is my framebuffer size
glReadPixels(0, 0, iSurfaceWidth, iSurfaceHeight, GL_RGBA, GL_UNSIGNED_BYTE, 0);
ptr = (GLuint*)glMapBufferRange(GL_PIXEL_PACK_BUFFER, 0, iSize, GL_MAP_READ_BIT);
glReadPixels(0, 0, iSurfaceWidth, iSurfaceHeight, GL_RGBA, GL_UNSIGNED_BYTE, cBuff); // cBuff client buffer container
glUnmapBuffer(GL_PIXEL_PACK_BUFFER);
는, 제 glReadPixel 호에 오류가 기대 맞()?
매핑 된 버퍼의 개념을 이해하는 데 도움이 될까요?
그래서 우리가 glMapBufferRange()를 사용할 때, 그것은 버퍼가 매핑된다는 것을 의미합니다. "당신은 어떤 식 으로든 버퍼를 사용할 수 없습니다."라는 말은 glMapBufferRange() 후에 glReadPixels를 호출하면 opengles 3 사양에 따라 일부 오류 (GL_INVALID_OPERATION)가 생성되어야한다는 것입니다. "0이 아닌 버퍼 객체 이름이 있으면 GL_INVALID_OPERATION이 생성됩니다. GL_PIXEL_PACK_BUFFER 대상에 바인딩되고 버퍼 개체의 데이터 저장소가 현재 매핑됩니다. " – user1896853