【问题标题】:iOS 360 Video using OpenGL ES 2.0使用 OpenGL ES 2.0 的 iOS 360 视频
【发布时间】:2017-01-11 02:40:40
【问题描述】:

我有一个应用程序,它使用 OpenGL ES 3.0 来播放 360 度视频,并使用天空球实现。我想使用 OpenGL ES 2.0 来支持更多的设备。

在 ViewController.swift 中,我在 setupContext() 方法中创建了 EAGLContext,它适用于 .OpenGLES3,但是当我尝试使用 .OpenGLES2 时,我只看到黑屏。没有错误消息,我无法辨别 OpenGL ES 2.0 不支持哪些 API 函数。

context = EAGLContext(API: .OpenGLES3)
EAGLContext.setCurrentContext(context)

如何使用 OpenGL ES 2.0 通过天空球体显示 360 度视频?主要实现在 Skysphere.swift 中。谢谢。

可在此处找到示例应用程序:https://github.com/devinshively/TestVideoPlayer

【问题讨论】:

  • 为什么不直接在视频中加载球体网格和纹理贴图?而不是使用 Sky Sphere 实现。这样您就可以轻松支持旧设备。

标签: ios iphone opengl-es opengl-es-2.0 opengl-es-3.0


【解决方案1】:

问题在于 OpenGL 3 会自动推断像素宽度和高度。要使用 OpenGL 2,我需要定义像素缓冲区属性 kCVPixelBufferWidthKey 和 kCVPixelBufferHeightKey。我用修复更新了测试仓库。

let pixelBufferAttributes = [kCVPixelBufferPixelFormatTypeKey as String : NSNumber(unsignedInt: kCVPixelFormatType_32BGRA),
                                       kCVPixelBufferWidthKey as String : 1024,
                                      kCVPixelBufferHeightKey as String : 512]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-14
    • 1970-01-01
    • 2012-12-05
    相关资源
    最近更新 更多