使用CVOpenGLESTextureRef作为渲染目标?

时间:2012-02-07 12:19:27

标签: iphone ios opengl-es ios5

我正在尝试使用CVOpenGLESTextureRef来确定如何使用CVOpenGLESTextureCacheRefglReadPixels进行替换。

我了解如何使用它们从传入的摄像机图像创建纹理,如RosyWriter和CameraRipple演示中所示。但我无法弄清楚如何使用它们走另一条路。

函数CVOpenGLESTextureCacheCreateTextureFromImage的头文件中的注释给出了以下示例:

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

这是我能找到的所有信息。你怎么用这个?

目前我正在执行以下操作,以便在应用程序开始时创建我的屏幕外帧缓冲区对象。

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

  • 我如何使用CVOpenGLESTextureRefCVOpenGLESTextureCacheRef代替上述内容?
  • 我如何在主渲染缓冲区上使用它,而不是在屏幕外FBO上使用它?


其他可能相关的信息:

  • 我在支持2.0的设备上使用OpenGL ES 1.1(不能选择迁移到2.0)。
  • 我已使用CVOpenGLESTextureRefCVOpenGLESTextureCacheRef在屏幕上显示摄像机视频图像。
  • 我正在使用CVPixelBufferRefs和BRGA格式写出视频。
  • 如果我使用主渲染缓冲区,我可以使用glReadPixels拨打GL_BGRA_EXT
  • 如果我使用屏幕外FBO(视频尺寸较小),我必须使用RGBA格式并进行调配。

0 个答案:

没有答案