OpenGL教程:1. GLFW和GLAD的初始化
OpenGL是图形API,是一种规范。他作为最古老的图形API,无论是后起之秀DirectX和Vulkan,都遵循这种规范。
既然是一种API,那么他就是一种图形接口,供用户去实现一些图形的操作。具体来说,这一过程如下:
这说明,各大显卡厂商根据OpenGL制定相对应的显卡(不止是OpenGL,还有DirectX和Vulkan等图形API)。用户通过GLFW和GLAD“对接API”。最后才能实现真正的图形编程。可能你目前还看不懂这些术语,之后会好好解释的。
入门计算机图形学,需要有良好的数学基础,以及编码能力。我们主要采用C++语言编程OpenGL。需要说明的是,Python、Java和Golang都可以编程OpenGL,并且在这方面的语法是出奇的相似。建议挑选自己熟悉的语言学习。(但我仍然强烈推荐用C++,问就是效率高而且高自定义性)
最后,要强调的是,OpenGL是一个巨大的状态机,每一条gl的语句都是一种状态。这一点需要明确,这对后面对OpenGL代码的理解有着重要的作用。
GLFW和GLAD
究竟什么是GLFW和GLAD?
首先还是要强调的是,OpenGL是一种标准一种规范。所以官方是没有为OpenGL专门开发函数库的。OpenGL只有框架没有实现,换句话说就是OpenGL只有函数声明没有源文件实现,类似于接口和虚函数。这意味着我们要想图形编程。首先得找到对应语言中专门开发OpenGL的函数库。这就是GLFW和GLAD的由来原因了。
GLFW简单来说,就是一种针对C语言的OpenGL库,它允许用户创建OpenGL窗口,定义窗口参数以及定义键鼠输入的回调函数。简单来说,GLFW就是控制OpenGL窗口相关的事件和参数的一种OpenGL函数库。GLFW的函数常常以glfw开头。
而GLAD就侧重于图形开发的部分了。它是OpenGL的函数指针库,是基于官方规格的多语言GL、GLES、EGL、GLX、WGL装载机/生成器。简单来说,GLAD侧重于一个OpenGL程序中图形渲染的部分。GLAD的函数常常以gl开头。
另外一种搭配就是GLUT/GLEW,其中前者与GLFW效果相同,后者与GLAD效果相同。
所以,我们在编程的时候,首先需要对GLFW初始化,毕竟没有窗口还渲染什么图形。然后在初始化GLAD。
第一个窗口
在这节之前请先配置好GLFW/GLAD的环境。
在C++程序中,一般格式为:
1 |
|
main函数中,我们先初始化了GLFW,并且声明了GLFW的版本(常用3.3版本)。然后创建了一个GLFW窗口,第一二个参数为窗口的分辨率(大小),第三个参数为窗口的名字。
之后做的if判断是判断窗口生成成功了么,如果失败了就终止程序。
创建完窗口我们就可以通知GLFW将我们窗口的上下文设置为当前线程的主上下文了。
之后初始化GLAD,执行gladLoadGLLoader的同时可以作为if的判断依据,方便判断GLAD是否初始化成功。
OpenGL教程:1. GLFW和GLAD的初始化
http://blog.inverseda.top/2022/11/01/ComputerGraphics/OpenGL/1.GLFW和GLAD的使用/