学习OpenGL最常见的教程是LearnOpenGL,该教程使用的OpenGL库是glfw,因此如果想要按照那个教程从头到尾学习一遍OpenGL,那么请不要犹豫关掉本教程然后点开LearnOpenGL的网站开始学习(本人的OpenGL入门就是这样学的)。
本教程使用的是glut库的开源版本freeglut库,原因在于该库相比于glfw更加简单,它隐藏了很多OpenGL的设置,使得代码编写更加简洁(需要注意的是,代码编写的简洁对于想要用到OpenGL高级功能的老哥并不见得是一个好特性,对于想要深刻理解OpenGL底层的同学也不见得是好事情,毕竟君不见要取代OpenGL一统图形API的Vulkan为了让编程人员可以更好地和底层交互,Hello world工程就要几千行。。。)
那本教程的意义何在?
在于为那些想要用OpenGL来进行图形渲染,而又不想要太深入地和OpenGL打交道的工程师提供一个简要的OpenGL工程应用指南。
学习完本教程能干嘛?
- 可以用OpenGL来进行2D图像的显示。
- 使用OpenGL实现简单的GUI控件,比如“按钮控件”、“文字显示控件”、“文字编辑控件”等。
有了上面两个技能,就可以做一款复杂度接近于播放器的软件了(这也是本人做这件事情的原因,本人之前一直用MFC+OpenGL编写播放器,总有种大炮打蚊子的感觉,而且还是生了锈的大炮。。。)
freeglut的环境配置
接下来进入主题,先讲freeglut的环境配置。
1. 下载freeglut库
地址:https://www.transmissionzero.co.uk/software/freeglut-devel/
解压,在"\freeglut-MSVC-3.0.0-2.mp\freeglut"目录下得到
2. 配置
在VS中,将"include"和"lib"文件夹拷贝到工程文件夹中,然后
选择"项目→C/C++→常规→附加包含目录",添加"./include"
选择"项目→链接器→常规→附加库目录",添加"./lib/x64"
然后把"bin/x64"文件夹中的"freeglut.dll"拷贝到工程文件夹中即可完成工程的配置。
3. 简单的代码运行
#include <gl/freeglut.h>
void display(void)
{
//填充缓冲区表面
glFlush();
//缓冲区翻转显示图像
glutSwapBuffers();
}
int main(int argc, char* argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA);//设置绘图模式
glutInitWindowPosition(0, 0);//设置窗口弹出位置
glutInitWindowSize(800, 600);//设置窗口大小
glutCreateWindow("imgshow");//创建窗口
glutDisplayFunc(&display);//定义绘图回调函数
glutMainLoop();//进入消息循环
return 0;
}
到此我们就完成了最简单的freeglut的设置,下一篇我们将介绍freeglut的输入响应。