2016-05-19 99 views
2

我有一个应用程序使用OpenGL ES 3.0播放360视频使用天空领域的实施。我想使用OpenGL ES 2.0来支持更多的设备。iOS 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

+0

为什么不只是加载球体网格和纹理映射视频?而不是使用Sky Sphere实施。这样您就可以轻松支持旧设备。 – codetiger

回答

0

的问题是OpenGL的3自动推断像素的宽度和高度。要使用OpenGL 2,我需要定义像素缓冲区属性kCVPixelBufferWidthKey和kCVPixelBufferHeightKey。我用修正更新了测试回购。

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