由于OpenGL是一个图形API,并不是一个独立的平台,它需要一个编程语言来工作,在这里我们使用的是C++。
在使用c++时需要配置相关的环境,c++相比于python需要自己手动查找对应的库下载,这里推荐使用Visual Studio进行相关配置。
我具体介绍两个主要库的配置,glfw和glew
添加OpenGL依赖项
打开vs, 工具 -> NuGet 包管理器 -> 管理解决方案的 NuGet 程序包
1.glfw的下载
在浏览中找到glfw
如果出现外部符号或者无法链接的情况,可以打开解决方案管理器,右键,点击属性,找到链接器中的输入:
在附加依赖项中添加 opengl32.lib,确定并应用后,重新运行
2.glew的下载
同上,在工具包中找到glew库
选择glew -> 右边项目打勾 -> 安装
可以使用下列代码检查是否成功安装
#include <GL/glew.h>
#include <GLFW/glfw3.h>
#include <iostream>
#include <cmath>void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) {if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS) {glfwSetWindowShouldClose(window, GLFW_TRUE);}
}int main() {// 初始化GLFWif (!glfwInit()) {std::cerr << "Failed to initialize GLFW" << std::endl;return -1;}// 创建窗口GLFWwindow* window = glfwCreateWindow(800, 600, "GLEW Test", NULL, NULL);if (!window) {std::cerr << "Failed to create GLFW window" << std::endl;glfwTerminate();return -1;}// 设置当前窗口的上下文为活动上下文glfwMakeContextCurrent(window);// 初始化GLEWglewExperimental = GL_TRUE; // 启用GLEW的实验性功能if (glewInit() != GLEW_OK) {std::cerr << "Failed to initialize GLEW" << std::endl;return -1;}// 设置视口大小int width, height;glfwGetFramebufferSize(window, &width, &height);glViewport(0, 0, width, height);// 设置清除颜色glClearColor(1.0f, 1.0f, 1.0f, 1.0f); // 白色背景// 启用深度测试glEnable(GL_DEPTH_TEST);// 主循环while (!glfwWindowShouldClose(window)) {// 清除颜色缓冲区和深度缓冲区glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);// 绘制绿色的三角形glMatrixMode(GL_PROJECTION);glLoadIdentity();gluPerspective(45.0, (double)width / (double)height, 0.1, 100.0);glMatrixMode(GL_MODELVIEW);glLoadIdentity();gluLookAt(0.0, 0.0, 5.0, // 眼睛位置0.0, 0.0, 0.0, // 观察点0.0, 1.0, 0.0); // 上方向glBegin(GL_TRIANGLES);glColor3f(0.0f, 1.0f, 0.0f); // 绿色glVertex3f(-0.5f, -0.5f, 0.0f);glVertex3f(0.5f, -0.5f, 0.0f);glVertex3f(0.0f, 0.5f, 0.0f);glEnd();// 交换缓冲区glfwSwapBuffers(window);// 处理事件glfwPollEvents();}// 清理资源glfwDestroyWindow(window);glfwTerminate();return 0;
}
如果发生报错,原因和上述类似,这次缺少的库是 glu32.lib ,同样在属性中加入便可(要用回车在下边加上,不能跟在上个库后面加分号添加),故而自行运行其他代码时,出现类似的报错可寻求相近的解决措施。