OpenGL ES利用纹理绘制实时视频的关键步骤

基于协议保密的原因,不能具体介绍情况,只是说说注意的地方。

 首先视频数据能基本解码成功了,采用OpenGL ES技术是想在原来的基础上提升性能。我试验的结果是性能没有什么变化;从执行时间来说还慢了10倍(之前是0.01秒的处理时间,加了OpenGL ES后还要0.1秒了)。

在成功解码视频数据后加入以下代码:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{    //  1

               [EAGLContext setCurrentContext:_context];                                                                                  //  2

               NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES],GLKTextureLoaderOriginBottomLeft, nil]; //  3

               GLKTextureInfo *texttureInfo = [GLKTextureLoader textureWithContentsOfData:UIImageJPEGRepresentation(image, 1.0) options:options error:nil]; //  4

               self.effect.texture2d0.name = texttureInfo.name;  //  5

           });

1.我采用了GCD技术来缩短执行时间,确实加了GCD后平均能缩短0.02左右的时间。

2.OpenGL 的选择当前设备上下文(context)。(不设置的话就不会显示处理)

3.作为opengl的视频旋转处理。不然视频是倒立的。

4.生成纹理,做贴图用,在openGL es中叫纹理了。类似UIImageView。(这个要注意,要使用jpg格式的,我开始做成PNG格式的老是黑屏)。

5.绘图并显示图片。


以下是OpenGL ES的相关资源

http://mississi.blog.163.com/blog/static/10248920120127136451896/

http://www.1000phone.net/forum.php?mod=viewthread&tid=6270&highlight=OpenGL%2BES

http://down.51cto.com/zt/6229




你可能感兴趣的:(iphone)