如何从 OpenGL 纹理创建 CVOpenGLTextureRef

发布于 2024-11-03 17:54:45 字数 140 浏览 1 评论 0原文

我有一个使用 OpenGL 和 Core Video 的小项目设置。我渲染到 FBO 并将其用作程序其他部分的纹理,但以 CVOpenGLTextureRef 的形式传递此纹理引用会更好。但我找不到任何有用的文档如何从纹理名称和目标创建此数据类型(不复制任何数据)。

I have a little Project setup using OpenGL and Core Video. I render to a FBO and use this as a Texture for other parts of the Programm, but it would be nicer to pass this Texture reference in form of a CVOpenGLTextureRef . But i cant find any Useful doumentation how to create this datatype from a Texture Name and Target (without copying any data).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

江城子 2024-11-10 17:54:45

据我了解,要从 OpenGL 上下文读取数据,您需要使用 CVOpenGLBufferRef(这是一种 CVImageBufferRef 类型)。文档声称这些包装 pbuffer,但我猜它们可以与 FBO 一起使用。我没试过。

要渲染来自 CVOpenGLBufferRef 的数据,您需要使用 CVOpenGLTextureCacheRef 将其绘制到纹理,它管理一组 CVOpenGLTextureRef

如果您只想绘制未修改的缓冲区内容,那么在 OpenGL 中工作可能会更有效。 (请注意,如有必要,您可以使用共享组在上下文之间共享纹理/缓冲区。)

如果您确实需要在上下文之间调整缓冲区,并且不希望使用 Core 获得的所有蓬松的高级抽象和有用的文档视频,您可能想了解一下 IOSurface 和 CGLIOSurface。

As I understand it, to read data from an OpenGL context, you need to use a CVOpenGLBufferRef (which is a type of CVImageBufferRef). The documentation claims that these wrap pbuffers, but I would guess they work with FBOs. I haven’t tried it.

To render the data from a CVOpenGLBufferRef, you need to draw it to a texture using a CVOpenGLTextureCacheRef, which manages a set of CVOpenGLTextureRefs.

If you only want do draw the unmodified buffer contents, it’s probably more efficient to work within OpenGL. (Note that you can share textures/buffers between contexts using share groups, if necessary.)

If you do need to shuffle buffers around between contexts, and don’t want all that fluffy high-level abstraction and helpful documentation that you get with Core Video, you might want to look into IOSurface and CGLIOSurface.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文