0
我需要在PBO映射時測試glReadPixels的INVALID_OPERATION錯誤。但沒有得到什麼確切的緩衝區映射。 下面的代碼部分:緩衝區映射對於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()時,這意味着緩衝區被映射。 「在映射時不能使用任何緩衝區」,這是否意味着在glMapBufferRange()應該產生一些錯誤(GL_INVALID_OPERATION)後,根據opengles 3規範調用glReadPixels「如果一個非零緩衝區對象名稱生成,則會生成GL_INVALID_OPERATION綁定到GL_PIXEL_PACK_BUFFER目標,並且當前映射緩衝區對象的數據存儲區。「 – user1896853