关于OpenGL的一些记录
-
OpenGL是一个3D图形标准,与硬件无关,独立于操作系统。
-
OpenGL的核心库和为 gl,用于常规的、核心的图形处理;实用程序库为 glu,通过调用核心库的函数,提供相对便利的用法。这两个库在电脑中应该都可以直接找到 (即使是下载MinGW,你也能在其中找到和两个库)。不过这两个库是不包含窗口创建的,如果你对诸如MFC之类的图形用户界面框架很了解的话倒是可以自己去创建窗口。
-
不过OpenGL官方提供了另外一个工具库 glut,可以帮助建立窗口。另外需要注意的是,如果你仅使用 glut, gl, glu 这三个库来写OpenGL的程序的话,需要首先 include glut 这个库,不然核心库的函数都会报错(至少使用Visual Studio是这样)。
-
为什么我们会需要诸如 GLEW,GLAD 这样的库:OpenGL大多数函数的位置都无法在编译时确定下来,需要在运行时查询,这会使得你的代码变得十分冗余。
-
为什么不使用诸如 "glBegin()"之类的函数,感觉很方便:使用OpenGL旧版本的函数绘制一个这样的三角形,代码量相对较少。
Triangle
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glBegin(GL_TRIANGLES);
glColor3f(1.0f, 1.0f, 0.0f);
glVertex3f(0, 1.0, 0);
glColor3f(1.0f, 0.0f, 0.0f);
glVertex3f(-1, 0.5, 0);
glColor3f(0.0f, 0.0f, 0.0f);
glVertex3f(1, -1, 0);
glEnd();
glutSwapBuffers();
-
抛开 glut 库的初始化部分等,核心部分就只需要设置颜色,设置坐标就行了。但是这些毕竟已经是固定管线时代的函数了。学习OpenGL起码也应该去学习3.0之后的版本,和之前的相比,OpenGL相差很大,不仅仅是函数细节的不同。
-
至于学习OpenGL的话,之前盲目地购买了《OpenGL编程指南》,然后才发现这本书大概会让初学者丧失全部兴趣,这本书更加近似于一个手册而不是学习书籍。推荐一个网站,个人觉得这个网站对于OpenGL的讲解比较详细,环境配置也很细致(即使你之前没用过c++估计也能一步步配置好),而且逐步渐进对于初学者很友好。
https://learnopengl.com/ -
当然也有人对这个网站进行了中文翻译,不过这个翻译并不全。(后面的文档缺失)但是是一个比较新的翻译,因为原英文作者对他的文档进行过一些改动。(譬如使用 GLAD 而非 GLEW )
https://learnopengl-cn.github.io/ -
还有另外一个中文翻译的网站,不过应该是较早的一个翻译吧,因为使用的还是 GLEW 库,不过翻译完整度很高。
https://learnopengl-cn.readthedocs.io/zh/latest/