C++/Opengl编程实践
一、OpenGL编程前提
图形编程是以来显卡的,其程序分为两部分,一部分是用C++/java语言编写运行在CPU上的,另一部分是使用着色器语言(GLSL)编写,运行在GPU上的。
1. 需要使用的编程语言及三方库
OpenGL是一个底层无关的图形库,也是一个标准,定义了图形API,用来操作系统底层的图形操作。
使用C++语言调用opengl库来进行图形编程,需要配置多个库,主要包括以下:
-
C++开发环境
-
Opengl/GLSL
-
窗口管理库
-
扩展库
-
数学库
-
纹理图像加载库
(1) C++开发环境
windows系统下推荐使用Visual Studio 2022;Linux 推荐使用VSCode/Clion;Mac上推荐使用Xcode.
VS2022安装:https://www.zhihu.com/zvideo/1463954977064001537?utm_id=0
(2) OpenGL/GLSL
进行opengl编程,需要确保安装显卡,且显卡驱动程序中的openg版本不低于4.3
可以使用GLView检测本机opengl版本,下载链接:https://www.geeks3d.com/dl/show/10097
使用教程:https://blog.csdn.net/qq_51355375/article/details/140570428
(3) 窗口管理库
OpenGL绘制的内容并不能直接显示在计算机屏幕上,而是渲染到GPU显存上的一个帧缓冲区上。因此从帧缓存区将绘制的内容显示到屏幕上需要借助第三方库。目前主流使用GLFW,其源码下载:https://www.glfw.org/,需要使用CMake进行本地编译.
(4) 扩展库
opengl包含基本功能和拓展功能,一般要使用扩展功能,需要调用opengl和心中一系列的命令来实现,逻辑太复杂,为了编译调用opengl的扩展功能,可以使用第三方库(我理解就是对opengl调用过程进行了封装的库)如Glee、GLLoader、GLEW、GLAD等,这里选择使用GLEW。
GLEW下载地址:https://glew.sourceforge.net/
(5) 数学库
3D图形编程会使用到大量的向量和矩阵运算,可以使用OpenGL Mathematics(GLM)库,它所有的定义及实现均在头文件中,引用头文件就可以使用
且GLM遵循和GLSL相同的命名惯例,使用起来更方便。
源码地址:https://github.com/g-truc/glm
(6) 纹理图像加载库
使用SOIL2加载纹理图像资源,其支持加载各种格式的图像文件,且跨平台
安装指南:https://blog.csdn.net/gitblog_07032/article/details/142225284
(7) 模型导入库
Assimp or tinyobiloader