最近在研究OpenGL和OpenGLES最大的一个感觉是,其实原理都是差不多的.但是呢,每个平台之间的功能函数用起来,感觉又是各玩各的.
个人使用的是Version 8.3.2 (8E2002) , 编程语言用OC
翻过好多资料,感觉绝大部分的资料基本上基于MFC编译工具.Xcode的也有,但是不多,也不精.好多都是好久以前的(关于GLKit/OpenGLES的)博文了.
网上保存了一个比较好理解的图形:
渲染过程比较官方的逻辑图 :
可编程管线其实里面主要是顶点着色器和片段着色器的编程操作.这两个着色器完了之后呢?然后就链接到一个程序对象上,再对程序对象进行操作,也就是让程序对象根据着色器的内容渲染出具体的图形对象.
大概步骤在这里面.卡了我好久的是:
1.顶点数据是怎么创建的,怎么加载?修饰符怎么理解?
2.顶点数据创建之后怎么设计既定路线布局的(也就是怎么画出预期的图形)
3.怎么动态的改变顶点数据?比如我想颜色出现渐变.
4.各种缓冲区怎么用?怎么理解?VBO,VAO,EBO(或者叫IBO)怎么使用体现性能?
没有一个完整得过程,没有概念,看书也很难理解,脑补了好久.
关键资料书的例子在Xcode上运行总提示某些库找不到,话说Xcode能混编C和C++,但是处理这个也耗相当长的时间
总结为什么呢??
原因1: 太扣细节了,可能有钻牛角尖的情况.理解太慢
原因2: 每种语言编写的方式不一样.两者之间对于一个新手来说,你很难体会其中的差别.
比如:
纯C来写,可能跨平台性好.但是细节相当多,相当麻烦.
使用Xcode中GLKit来做,步骤相对简单,但是同时需要一些OpenGL的基础知识,这些内容又需要你从C语言的角度去理解.
原因3: 学习的方式不太好,学习效率不高.
总之,坑要不断的爬,下面来感受一下不同吧.
网友评论