GLFW入门教程02.03:三角形
目的
基于GLFW3使用固定管线方法画一个三角形。
核心模式与立即渲染模式
早期的OpenGL使用立即渲染模式(Immediate mode,也就是固定渲染管线),这个模式下绘制图形很方便。
OpenGL的大多数功能都被库隐藏起来,开发者很少能控制OpenGL如何进行计算的自由。而开发者迫切希望能有更多的灵活性。随着时间推移,规范越来越灵活,开发者对绘图细节有了更多的掌控。立即渲染模式确实容易使用和理解,但是效率太低。因此从OpenGL3.2开始,规范文档开始废弃立即渲染模式,并鼓励开发者在OpenGL的核心模式(Core-profile)下进行开发,这个分支的规范完全移除了旧的特性。
当使用OpenGL的核心模式时,OpenGL迫使我们使用现代的函数。当我们试图使用一个已废弃的函数时,OpenGL会抛出一个错误并终止绘图。现代函数的优势是更高的灵活性和效率,然而也更难于学习。立即渲染模式从OpenGL实际运作中抽象掉了很多细节,因此它在易于学习的同时,也很难让人去把握OpenGL具体是如何运作的。现代函数要求使用者真正理解OpenGL和图形编程,它有一些难度,然而提供了更多的灵活性,更高的效率,更重要的是可以更深入的理解图形编程。
现在的很多教程依旧使用的是早期OpenGL的立即渲染(固定渲染管线)模式,你可能见过,它就是通过gl_Begin(图元),glVertex3D(…)…来绘制一些基本图形。
而现代openGL使用的是核心模式,它是通过VAO,VBO…等,使用drawElements(…),或者drawArray(…)来绘制基本图形。
为什么要使用核心模式?
- 性能方面,固定渲染管线的渲染比较慢,它在绘制图形的时候,由于顶点数据是存在CPU中,一次只能通过glVertex3D来发送一个顶点数据到GPU中,而核心模式是可以使用顶点数组来一次传输大量的顶点数据。
- 应用方面,核心模式可以直接编写着色器程序,扩展性有了很大提升,很多特效的制作,依赖于着色器程序。
代码
在上一篇显示空白界面的基础上,添加功能
1 |
|
效果
编译运行代码
GLFW入门教程02.03:三角形
https://blog.jackeylea.com/glfw/how-to-display-triangle/