我已经做了大约一个小时的研究,来自零图形体验。官方网站称OpenGL ES 2.x是相对于OpenGL 2.0定义的。但是,我已经读到2.0 / 3.0之间的主要区别是固定功能管道的弃用(不知道此时是什么),并且ES 2.x没有固定功能管道。这些最后的细节令我感到困惑。
我问的原因是因为我正在考虑购买OpenGL Superbible 5th Edition。根据作者和一些亚马逊评论家的说法,本书严重偏向于OpenGL 3.0,实际上建议将早期版本用于OpenGL 2.0。考虑到我主要对ES感兴趣,哪个OpenGL版本最相关,2.0或3.0?
另外,如果由于某种原因我决定使用ES 1.1,我假设2.0书是正确的选择?
答案 0 :(得分:4)
OpenGL 2.0是第一个带有可编程管道的,但是它与固定管道串联运行,所以例如你可以编写一个顶点着色器(粗略地说,这是一个定义3d空间中的位置如何转换为位置的东西)在屏幕上)只是说“使用固定功能代码”。你已经不再愿意在3.0下做到这一点,因为固定的东西已被弃用 - 你明确警告它可能在将来消失。
不幸的是,GL 3.0使用的GL着色语言优于GLES 2.0(前者为1.30,后者为1.20)。并且它不仅仅是深奥的功能不同,它是一些基本的命名事情,当你开始时不会那么好。例如。 GLSL ES 1.0(与GL ES 2.0一样)坚持制服的概念(每个三角形最多指定一次)和变化(每个顶点计算的东西,硬件自动计算出每个像素的中间值)。 GLSL 1.30着眼于未来潜在的额外可编程流水线阶段,因此更喜欢每个部分的输入和输出更抽象的概念,产生不同的关键字,因此产生不同的语法。将这一个映射到另一个并不困难,但在启动时可能是一个真正的障碍。
理想情况下,从真正的GLSL 2.0文本开始。因为1.x完全是关于固定功能的,所以如果你真的没有兴趣学习旧的API,那就没有意义了 - 除了你把数据传递到GPU之外的所有东西都是不同的。
但是,如果您确实想从桌面文本中学习ES 1.x,那么1.5上的书就是前进的方向。 1.5是ES 1.0所基于的API,大多数低效或很少使用的功能位被切断。
相反,webGL在浏览器中完全是ES 2.0,并且Web开发人员直接感兴趣的内容可能会在Web上得到很好的记录。这可能是一个想法。