最近要学一下OpenGL
什么是OpenGL?
一般它被认为是一个API(Application Programming Interface, 应用程序编程接口),包含了一系列可以操作图形、图像的函数
然而,OpenGL本身并不是一个API,它仅仅是一个由Khronos组织制定并维护的规范(Specification)
OpenGL规范严格规定了每个函数该如何执行,以及它们的输出值。
不同显卡所支持的OpenGL版本都为这个系列的显卡专门开发的。
比如:当你使用Apple系统的时候,OpenGL库是由Apple自身维护的。
两种模式:
1.立即渲染模式(Immediate mode,也就是固定渲染管线)
绘制图形很方便。OpenGL的大多数功能都被库隐藏起来,开发者很少有控制OpenGL如何进行计算的自由
已经过时了
2.核心模式(Core-profile)
更高的灵活性和效率,然而也更难于学习,要求使用者真正理解OpenGL和图形编程
现在研究的是:OpenGL3.3的核心模式
环境配置:
1.需要创建一个OpenGL上下文(Context)和一个用于显示的窗口
可以用一些插件,比如:GLUT、SDL、SFML、GLFW
GLFW是一个专门针对OpenGL的C语言库,它提供了一些渲染物体所需的最低限度的接口。
它允许用户创建OpenGL上下文、定义窗口参数以及处理用户输入
下载的东西已经给你编译好成lib了,直接用 include 和 lib-vc20xx 就行(根据你vs的版本)
需要先创建vs c++工程,选空工程或者命令行都可以
在包含目录(Include Directories)里面添加include的查找路径
在引用目录(Library Directories)里面添加lib-vs20xx的查找路径(我改名称lib了)
这里设置附加库目录
这里设置附加依赖项
然后编译,如果没问题就可以了。
2.调用具体实现函数
因为OpenGL只是一个标准/规范,具体的实现是由驱动开发商针对特定显卡实现的
由于OpenGL驱动版本众多,它大多数函数的位置都无法在编译时确定下来,需要在运行时查询
所以任务就落在了开发者身上,开发者需要在运行时获取函数地址并将其保存在一个函数指针中供以后使用
GLAD是一个开源的库,它能解决我们上面提到的那个繁琐的问题
GLAD在线服务
将语言(Language)设置为C/C++,在API选项中,选择3.3以上的OpenGL(gl)版本
点击 Generate,下载 glad.zip
解压后把 include 放在刚才的 include 文件目录里面,或者再按配置加一个新的
然后把src里面的 glad.c 添加到工程里面

最后添加main函数和测试代码,看下是否成功运行
#include