我使用OpenGL和Core Video进行了一些项目设置。我渲染到FBO并将其用作程序其他部分的纹理,但以CVOpenGLTextureRef的形式传递此纹理引用会更好。但我无法找到任何有用的doumentation如何从纹理名称和目标创建此数据类型(不复制任何数据)。
答案 0 :(得分:1)
据我了解,要从OpenGL上下文中读取数据,您需要使用CVOpenGLBufferRef
(CVImageBufferRef
的类型)。文档声称这些包装pbuffers,但我猜它们可以与FBO一起使用。我没试过。
要渲染来自CVOpenGLBufferRef
的数据,您需要使用CVOpenGLTextureCacheRef
将其绘制到纹理,CVOpenGLTextureRef
管理一组{{1}} s。
如果您只想绘制未修改的缓冲区内容,那么在OpenGL中工作效率可能更高。 (请注意,如有必要,您可以使用共享组在上下文之间共享纹理/缓冲区。)
如果你确实需要在上下文之间混淆缓冲区,并且不希望使用Core Video获得所有那些蓬松的高级抽象和有用的文档,你可能需要查看IOSurface和CGLIOSurface。