我正在尝试使用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);
这是我能找到的所有信息。你怎么用这个?
目前我正在执行以下操作,以便在应用程序开始时创建我的屏幕外帧缓冲区对象。
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
代替上述内容?
其他可能相关的信息:
CVOpenGLESTextureRef
和CVOpenGLESTextureCacheRef
在屏幕上显示摄像机视频图像。CVPixelBufferRefs
和BRGA格式写出视频。glReadPixels
拨打GL_BGRA_EXT
。