OpenGL(一)基础知识

现在音视频类应用越来越多,特别是5G时代后,会出现井喷状态,所以开始学习这类东西。

OpenGL,OpenGL ES ,Metal等,今天先说OpenGL。

OpenGL是跨平台的,在Xcode中可以用C++来写(对于一个入行就开始做iOS的我来说,学习一门新的语言也是一道坎!!!)

OpenGL其实更多的是操作GPU(CPU20%的运算,80%的逻辑业务。GPU是100%的运算。CPU是在多调线程中来回迅速切换,以此来实现多线程。而GPU本身就可以实现多线程运算)

OpenGL与OpenGL ES的区别在于:OpenGL ES主要针对嵌入式设备使用,被简话的OpenGL。

在了解OpenGL之前,先了解一些术语:

光栅化:实际绘制/填充每个顶点之间的像素形成线程。(通俗的讲,就是根据代码绘制成像素让我们开到的过程)

着色:沿着顶点之间改变颜色值,能够强送创建光照一个立方体的效果。

纹理贴图:将一张图片附着到绘制的图像上。

混色:颜色混合效果。

坐标系:2D,3D。

图元:组成图像的基本单元。

GLSL:专门为图形开发设计的编程语言。

渲染管线:顶点数据-->顶点着色器-->细分着色器-->几何着色器-->图元设置-->剪切-->光栅化-->片元着色器-->效果。一套流程就为管线。

这里顶点着色器为必要的,细分和几何是可选的(90%的可能用不到),片元着色器必选。

上面说了管线,其实OpenGL在最开始给了我们一个固定管线,只需要传进来参数就可以解决问题。但是这并不能满足很多东西,特别是航空,军事,医疗方面,所以就有了一套语言GLSL和可编程管线。

理论知识完了,先段代码理解下:

这个方法是改变窗口大小,注意前面2位0,0是坐标原点,这里和iOS不一样,iOS的坐标原点在左上,这里是左下!

void ChangeSize(int w,int h) {

      glViewport(0,0, w, h);

}

void SetupRC() 为程序作一次性的设置,如果是一个固定的图形,可以直接把坐标系放里面。这里还有初始化着色器等等

int main(int argc,char* argv[]) 很多初始化的东西可以放在这里面,这里不详细说里面的东西,下面有代码有注释,可以看!

void RenderScene(void) 真正开始渲染的地方是这里!

void SpeacialKeys(int key, int x, int y) 特殊按键处理!目前我们先处理的都是方向键!转动图形!

上面的方法名除了main,其他都是可以更改的,但是参数是不能更改的!今天的代码只为理解初步使用!

代码

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值