gpt4 book ai didi

ios - 增强现实 : camera stream on OpenGL view

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:14:34 24 4
gpt4 key购买 nike

AR(增强现实)似乎是当今所有 iO 开发人员都关注的目标。我正在玩一个非常经典的宠物项目,滚动带有纹理的骰子,如果可能的话,相机会在骰子面上进行流式传输。我在最后一部分遇到了一些问题,我有一些问题想请教专家:

获取视频流需要 AV Foundation : AVCaptureVideoDataOutputSampleBufferDelegate 获取图像缓冲区,然后使用 CGBitmapContextCreate 等 Quartz 函数构建一个 UIImage。这在 http://www.benjaminloulier.com/articles/ios4-and-direct-access-to-the-camera 中得到了证明。或在 apple AV Foundation Programming Guide 中(参见 https://developer.apple.com/library/ios/#documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/04_MediaCapture.html#//apple_ref/doc/uid/TP40010188-CH5-SW30)

然后我可以像为“静止”图像所做的那样创建一个纹理,并将其与 GLKBaseEffect(或着色器?)一起使用。

问题 1:GLKBaseEffect 看起来非常好和简单,但我应该针对 OpenGL 2 和着色器吗?

现在,Apple 的 RosyWriter 演示使用 Core Video CVOpenGLESTextureCacheCreateTextureFromImage 函数直接绑定(bind)纹理,而无需创建中间 UIImage。这是 - 如演示说明中所述 - IOS 5 中的新功能。

问题 2:这是映射纹理的更好方法吗?

问题 3:有一些有趣的框架,例如 GPUImage,甚至 3D 游戏框架也可以使用。有人对使用这些有什么反馈吗?到目前为止,苹果提供的框架对我来说似乎非常完整。

非常感谢!

最佳答案

针对您的各种问题:

GLKBaseEffect seems really nice and simple, but should I aim for OpenGL 2 and shaders ?

GLKBaseEffect 只是一些简单的 OpenGL ES 2.0 着色器的包装器,因此它的核心使用 2.0。虽然 GLKit 提供了一些很好的便利,但最终您将需要创建默认情况下它无法提供的效果,因此您很可能需要在某个时候学习如何制作自己的顶点和片段着色器。我在 this answer 中列出了一些学习这些的资源.

Now the RosyWriter demo from apple uses the Core Video CVOpenGLESTextureCacheCreateTextureFromImage function to bind directly the texture without creating an intermediary UIImage. This is - as stated in the demo description - new in IOS 5.

Question 2: is this a better way to map the texture ?

是的,在 iOS 5.0 上,使用纹理缓存上传视频帧可以带来一些可靠的性能改进。对于 iPhone 4S,我看到帧上传时间从 640x480 帧的 9.3 毫秒下降到使用纹理缓存时的 1.8 毫秒。当reading from the texture caches to encode video时,还有更大的好处。 .

Question 3: There are a few interesting frameworks, like GPUImage, or even 3D Gaming frameworks that could be used too. Has anyone some feedback on using these ? The apple provided frameworks seem quite complete to me so far.

我建议为此使用 GPUImage,但我有点偏颇,看看我是如何写的。作为更具体的一点,我几乎完全按照您在该框架的示例代码中的 CubeExample 中描述的方式(读取视频帧并将它们映射到旋转立方体的侧面)。

这个例子有点复杂,因为我拍摄实时视频,通过棕褐色调过滤器运行它,将其作为纹理读入并将其显示在可以用手指旋转的 3-D 立方体上,然后获取立方体的渲染 View 并通过像素化过滤器运行。但是,您可以从该示例中仅提取您需要的部分。通过这样做,您将节省大量代码,因为我会为您负责视频捕获和上传到 OpenGL ES。

关于ios - 增强现实 : camera stream on OpenGL view,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11620346/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com