OpenGl的常用库:
-
glm:OpenGL Mathematics,可以提供符合OpenGL特定要求的数学计算功能,也可以说是OpenGL数学库。
-
SOIL:Simple OpenGL Image Library,一款轻量级的用于加载纹理图片的C语言库,可以加载BMP,PNG,TGA,DDS,JPG和PSD图片。它集成了FreeImage库,这意味着它可以加载像GIF,HDR,TIFF等等更多的图片格式。
-
GLEW库:GLEW库是一个扩充库,可以用于初始化并使用OpenGL函数,它使用它的宏和函数来自动检测硬件的设备开放的扩展功能,而不必担心硬件之间差异;
-
GLFW库:GLFW库是一个跨平台的图形应用框架,主要用于支持OpenGL、GLU和GLUT库,它提供了一个可以根据具体的硬件环境自动配置的管理视窗系统,支持多种输入设备,也有一些图形上下文管理器,可以在不同的操作系统上支持OpenGL的多个版本;
以及,Glut是一个用于图形程序开发的库,它提供了一个简单的接口,可用于在多种操作系统(如Windows、Linux和Mac OS X)上实现基于OpenGL的3D程序。它提供了一些支持OpenGL的工具,例如窗口管理,事件处理以及菜单管理,让用户以较少的代码就可以开发出视觉和交互性较为丰富的OpenGL程序。
-
glutCreateWindow:这个函数用来创建一个新的OpenGL窗口;
-
glutInit: glutInit函数用来初始化GLUT库,以便后续函数可以使用它。它需要在您的程序中的第一个GLUT函数被调用之前被调用。
-
glutInitDisplayMode:glutInitDisplayMode函数用来设置一系列显示模式,以指定OpenGL如何绘制像素数据。
-
glutDisplayFunc:这个函数用来指定一个在程序开始运行以及当需要再次绘制时执行的回调函数;
-
glutIdleFunc:这个函数指定一个在程序运行时(即当没有用户输入时)在后台被执行的函数;
-
glutMainLoop:这个函数指定OpenGL的程序进入无限的事件处理循环,不断的检查是否有新事件发生;
-
glutMouseFunc:这个函数指定一个用来处理鼠标事件的回调函数;
-
glutKeyboardFunc:这个函数指定一个用来处理键盘事件的回调函数
int main(int argc, char* argv[]) { // Initialize GLUT and process user parameters glutInit(&argc, argv); // Request double buffered true color window with Z-buffer glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); // Create window glutCreateWindow("Color Cube"); // Enable Z-buffer depth test glEnable(GL_DEPTH_TEST); // Callback functions glutDisplayFunc(display); glutSpecialFunc(specialKeys); // Pass control to GLUT for events glutMainLoop(); // Return to OS return 0;
-
绘制模型:
(1)创建你的3D模型,这可以使用前台应用程序像Blender(https://www.blender.org/)。
(2)将模型导出为适用于OpenGL的文件格式,即OBJ或者FBX格式。
(3)在OpenGL中实现模型绘制功能,即使用着色器,各种变换,纹理贴图等等:
1、载入模型文件:使用OpenGL载入模型文件,文件中包含以下信息:在模型中使用的纹理图片,模型的顶点数据(如顶点坐标),索引数据(指定每个三角形的三个顶点),网格(每个三角形属于哪个网格),以及材质信息(彩色,镜面等效果)。
2、将模型数据传递给GPU:利用OpenGL,我们可以将从模型文件中获得的顶点数据传递给GPU。
3、绘制模型:使用OpenGL中的函数glDrawElements,我们可以利用索引数据绘制模型。除此之外,我们还可以使用OpenGL中的纹理功能来对模型上的不同表面部分进行纹理映射,以实现更加精细的绘制效果
-
渲染动画
-
逻辑控制