当我看到第4版本书" OpenGL SuperBible"它从点/线绘制多边形开始,稍后讨论着色器。在本书的第6版中,它直接从Shaders开始作为第一个例子。我很长一段时间没有使用OpenGL,但这是从Shaders开始的方式吗?
为什么会出现转变,这是因为从固定管道转向Shaders?
答案 0 :(得分:2)
在有限的程度上,它取决于您正在谈论的OpenGL的确切分支。除了着色器之外,OpenGL ES 2.0没有到屏幕的路径 - 没有矩阵堆栈,没有着色器绘制的选项,也没有固定管道绑定的内置变量。 WebGL基于OpenGL ES 2.0,因此它继承了所有这些行为。
根据derhass的评论,所有固定的东西都在现代桌面GL中被弃用,你可以预期它会随着时间的流逝而消失。最快的检查可能是OpenGL 4.4 quick reference card。如果您想要的功能不在那里,那么它不在最新的OpenGL中。
根据您的评论,Kronos将OpenGL定义为:
唯一支持开发人员的跨平台图形API 用于创建PC,工作站和超级计算硬件的软件 高性能,视觉引人注目的图形软件应用程序, 在CAD,内容创作,能源,娱乐,游戏等市场中 开发,制造,医疗和虚拟现实。
它或多或少只暴露硬件。没有着色器,硬件无法执行任何操作。业内没有人希望维护着色器,永远模仿旧的固定功能。
答案 1 :(得分:2)
“关于您可以使用没有着色器的OpenGL进行的唯一渲染是清除窗口,这可以让您了解使用OpenGL时它们的重要性。” - 来自OpenGL官方指南
在OpenGL 3.1之后,固定功能管道被移除,着色器成为强制性的。
所以SuperBible或OpenGL红皮书首先在讨论的早期描述新的可编程管道。然后他们讲述如何编写和使用顶点和片段着色程序。
对于着色器对象,您现在必须:
然后将着色器对象链接到着色器程序:
在渲染之前,还有许多工作要做,而不是之前的固定功能管道。毫无疑问,可编程管道功能更强大,但它确实使得开始渲染变得更加困难。着色器现在是学习的核心概念。