说明
- 博主也是第一次配置,也搞不懂每个库代表啥啥啥,先记录下来以后填坑
下载
目测完整的运行 OpenGL 需要以下 3 个库
- GLUW
- GLEW
- GLFW
文件结构如下所示
OpenGL 文件夹
|--- include
|--- GL
|--- eglew.h
|--- glew.h
|--- glxew.h
|--- wglew.h
|--- GLFW
|--- glfw3.h
|--- glfw3native.h
|--- glut.h
|--- bin
|--- glew32.dll
|--- glewinfo.exe
|--- glfw3.dll
|--- glut.dll
|--- glut32.dll
|--- visualinfo.exe
|--- lib
|--- glew32.lib
|--- glew32s.lib
|--- glfw3.lib
|--- glfw3dll.lib
|--- glut.lib
|--- glut32.lib
然后添加包含目录、库目录、附加依赖项等
测试
#include <Windows.h> // 不添加该语句可能会报缺少 OPENGL.dll 的错误
#include "glut.h" // 这里只用了 GLUT 库,并没有用其他两个,也就是说,这是最简单的环境配置
void init(void) {
glClearColor(0.0, 0.0, 0.0, 0.0);//设置背景颜色为黑色
glShadeModel(GL_SMOOTH);//设置为光滑明暗模式
}
void myDisplay(void) {
glClear(GL_COLOR_BUFFER_BIT);// 将缓存清除为预先的设置值,即黑色
//glTranslatef(0.8, 0.0, 0.0);//平移函数,暂时可以不用
glBegin(GL_TRIANGLES);//开始画三角形
glColor3f(1.0, 0.0, 0.0);//设置第一个顶点为红色
glVertex2f(-1.0, -1.0);//设置第一个顶点的坐标
glColor3f(0.0, 1.0, 0.0);//设置第二个顶点为绿色
glVertex2f(0.0, -1.0);//设置第二个顶点的坐标
glColor3f(0.0, 0.0, 1.0);//设置第三个顶点为蓝色
glVertex2f(-0.5, 1.0);//设置第三个顶点的坐标
glEnd();//三角形结束
glFlush();//强制OpenGL函数在有限时间内运行
}
void myReshape(GLsizei w, GLsizei h) {
glViewport(0, 0, w, h);//设置视口
glMatrixMode(GL_PROJECTION);//指明当前矩阵为GL_PROJECTION
glLoadIdentity();//将当前矩阵置换为单位阵
if (w <= h)
gluOrtho2D(-1.0, 1.5, -1.5, 1.5 * (GLfloat)h / (GLfloat)w); //定义二维正视投影矩阵
else
gluOrtho2D(-1.0, 1.5 * (GLfloat)w / (GLfloat)h, -1.5, 1.5);
glMatrixMode(GL_MODELVIEW);//指明当前矩阵为GL_MODELVIEW
}
int main(int argc, char **argv) {
/*初始化*/
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);//单缓冲、RGB模式
glutInitWindowSize(400, 400);
glutInitWindowPosition(200, 200);
glutCreateWindow("三角形");//窗口标题
init();
/*绘制与显示*/
glutReshapeFunc(myReshape);//窗口大小发生改变时采取的行为
glutDisplayFunc(myDisplay);//显示绘制图形
glutMainLoop();//循环
return(0);
}
x64 位下会报错,我选择的是 x86
运行结果
遇到的错误
- 提示缺少 OPENGL.dll
- 加上 #Include <Windows.h>
- 提示 error LNK 2026 模块对于 SAFESEH 映象是不安全的
- 项目 - 属性 - 配置属性 - 链接器 - 高级 - 映象具有安全异常处理程序,改为否
- …