Я хочу прочитать пиксели из закадрового (не поддерживаемого CAEAGLLayer) фреймбуфера. Мой код для создания буфера выглядит так:
glGenFramebuffersOES(1, &_storeFramebuffer);
glGenRenderbuffersOES(1, &_storeRenderbuffer);
glBindFramebufferOES(GL_FRAMEBUFFER_OES, _storeFramebuffer);
glBindRenderbufferOES(GL_RENDERBUFFER_OES, _storeRenderbuffer);
glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_COLOR_ATTACHMENT0_OES, GL_RENDERBUFFER_OES, _storeRenderbuffer);
glRenderbufferStorageOES(GL_RENDERBUFFER_OES, GL_RGBA8_OES, w, h);
Я читаю необработанные пиксели с:
glBindFramebufferOES(GL_FRAMEBUFFER_OES, _storeFramebuffer);
glBindRenderbufferOES(GL_RENDERBUFFER_OES, _storeRenderbuffer);
glReadPixels(0, 0, _videoDimensions.width, _videoDimensions.height, GL_BGRA_EXT, GL_UNSIGNED_BYTE, CVPixelBufferGetBaseAddress(outPixelBuffer));
Это хорошо работает. Я могу сделать рендеринг в этот буфер и скопировать его на экран. Но я не могу получить сырые пиксели. glReadPixels всегда возвращает нули, а glReadBuffer, кажется, не существует. Я могу читать из экранного буфера кадров с glReadPixels. Есть идеи?