Использование CVOpenGLESTextureRef в качестве цели рендеринга? - PullRequest
2 голосов
/ 07 февраля 2012

Я пытаюсь понять, как использовать CVOpenGLESTextureRef и CVOpenGLESTextureCacheRef для замены, используя glReadPixels.

Я понимаю, как использовать их для создания текстуры из входящих изображений с камеры, как показано в демонстрациях RosyWriter и CameraRipple. Но я не могу понять, как использовать их, чтобы пойти другим путем.

Комментарии в заголовочном файле для функции CVOpenGLESTextureCacheCreateTextureFromImage дают следующий пример:

CVOpenGLESTextureCacheCreateTextureFromImage(kCFAllocatorDefault, textureCache, 
    pixelBuffer, NULL, GL_RENDERBUFFER, GL_RGBA8_OES, width, height, 
    GL_RGBA, GL_UNSIGNED_BYTE, 0, &outTexture);

и это вся информация, которую я могу найти. Как вы используете это?

В настоящее время я делаю следующее, чтобы создать закадровый объект Frame Buffer в начале приложения.

glGenFramebuffersOES(1, &frameBufferHandle);
glBindFramebufferOES(GL_FRAMEBUFFER_OES, frameBufferHandle);
glGenRenderbuffersOES(1, &colorBufferHandle);
glBindRenderbufferOES(GL_RENDERBUFFER_OES, colorBufferHandle);
glRenderbufferStorageOES(GL_RENDERBUFFER_OES, GL_RGBA8_OES, width, height);
glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, 
    GL_COLOR_ATTACHMENT0_OES,GL_RENDERBUFFER_OES, colorBufferHandle);

Затем, когда мне нужно записать его на диск, я связываю его и вызываю glReadPixels.

  • Как бы я использовал CVOpenGLESTextureRef и CVOpenGLESTextureCacheRef вместо вышеуказанного?
  • Как бы я использовал его в основном буфере рендеринга, а не на внеэкранном FBO?


Другая информация, которая может иметь отношение к делу:

  • Я использую OpenGL ES 1.1 на устройствах с поддержкой 2.0 (переход на 2.0 невозможен).
  • Я уже использую CVOpenGLESTextureRef и CVOpenGLESTextureCacheRef для отображения видеоизображения с камеры на экране.
  • Я записываю видео в формате CVPixelBufferRefs и BRGA.
  • Если я использую основной буфер рендеринга, я могу позвонить glReadPixels с GL_BGRA_EXT.
  • Если я использую FBO вне экрана (для меньшего размера видео), я должен использовать формат RGBA и делать немного прыщ.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...