iOS--OpenGL渲染

OpenGL是一个跨平台的图形程序接口,通常需要将YUV数据转换为RGB进行贴图,但在GPU上用GLSL着色器进行转换更高效。在iOS中,可以使用GLKView进行OpenGL的绑定和绘图,简化开发流程。本文总结了如何在iOS上使用OpenGL ES结合GLKView渲染YUV数据,并创建和编译着色器程序。
摘要由CSDN通过智能技术生成

OpenGL(全写Open Graphics Library)是个定义了一个跨编程语言、跨平台的编程接口规格的专业的图形程序接口。

OpenGL可以直接把RGB/RGBA的数据直接写入纹理中,利用纹理在窗口上进行贴图。然而我们知道从解码得到的数据基本上都不是RGB的,而是yuv的像素格式,比较常见的有YV12、NV12等。yuv可以通过软件计算转成RGB格式,然后进行贴图,这是一种很低效率的方式。比较好的做法是,通过GLSL着色器在GPU上进行像素格式转换。

虽然OpenGL是跨平台的,但是显示窗口和OpenGL的绑定,这个是不提供的。在iOS上可以自己实现,也可以继承Apple封装好的GLKView,本文就是采用继承GLKView的方式进行绘图。

@interface ShowView : GLKView
@end

使用的时候可以直接将UIView的class选择为ShowView,当然也可以给UIView添加一个ShowView成为其subview。

-(id)initWithFrame:(CGRect)frame
{
    m_bHasInit = false;
    
    self = [super initWithFrame:frame];
    if(self)
    {
        m_glSimpleProgram = 0;
        
        m_pBuffer  = NULL;
        m_nWidth   = 0;
        m_nHeight  = 0;
        
        // Initialization code
        if(self.context == NULL)
        {
  
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值