网上搜罗各种资料,终于把openGL的环境配置好了,为了让后面的人省事,于是整合出了一个类似于“懒人包”的东西,非常好弄,按照下面的教程来就好了,什么都不缺
一、事前准备
- 一块主流显卡(最好是独显)
- Visual Studio IDE(最好是2017以上版本,本人是2019)
应该都没问题
二、下载完整配置包
链接&提取码:u8d3,解压后暂时先仅考虑以下3个文件夹和一个文件,还有一些其他的文件等学到后面再用也不迟
其中 include 文件夹中的内容放入文件夹
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\include
lib 文件夹中的内容放入文件夹
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\lib\x86
dll 文件夹中的内容放入文件夹
C:\Windows\SysWOW64
注意以上是64位系统的放置方法,32位系统类比
三、最后准备
创建一个空项目,之后菜单 → 管理 NuGet 程序包
搜索 glfw 下载如下的这一个
最后将上面的 glad.c 放入源文件中,如下:
四、测试
搞定,现在可以随便去网上找示例代码测试了,一个可以运行的例子如下:
注意如果是copy别的地方的代码,要修改头文件的路径!!!
#include <openGL/glad.h>
#include <GLFW/glfw3.h>
#include <iostream>
using namespace std;
void framebuffer_size_callback(GLFWwindow* window, int width, int height);
int main()
{
glfwInit();
//glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
//glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 1);
//glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
GLFWwindow* window = glfwCreateWindow(800, 600, "LearnOpenGL", NULL, NULL);
if (window == NULL) {
cout << "Failed to create GLFW window" << endl;
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);
if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) {
std::cout << "Failed to initialize GLAD" << std::endl;
return -1;
}
glViewport(0, 0, 800, 600);
glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);
while (!glfwWindowShouldClose(window)) {
glfwSwapBuffers(window);
glfwPollEvents();
}
glfwTerminate();
return 0;
}
void framebuffer_size_callback(GLFWwindow* window, int width, int height)
{
glViewport(0, 0, width, height);
}
另一个glut的例子:
#include <iostream>
#include <opengl/freeglut.h>//freeGLUT窗口库
/**
* 渲染回调函数
*/
void RenderScenceCB()
{
// 清空颜色缓存
glClear(GL_COLOR_BUFFER_BIT);
// 交换前后缓存
glutSwapBuffers();
}
/**
* 主函数
*/
int main(int argc, char **argv)
{
// 初始化GLUT
glutInit(&argc, argv);
// 显示模式:双缓冲、RGBA
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA);
// 窗口设置
glutInitWindowSize(1136, 640); // 窗口尺寸
glutInitWindowPosition(100, 100); // 窗口位置
glutCreateWindow("20200414-01"); // 窗口标题
// 开始渲染
glutDisplayFunc(RenderScenceCB);
// 缓存清空后的颜色值
glClearColor(0.6f, 0.7f, 0.3f, 0.0f);
// 通知开始GLUT的内部循环
glutMainLoop();
return 0;
}
五、注意事项
glad 如果有问题可以自己生成:glad在线网站
部分选项如上填写,其中 gl 版本选择3.3以上即可,其它都不用管,然后生成一下就ok
关于电脑自带的openGL的版本:
查询方法:打开文件C:\Program Files (x86)\Windows Kits\10\Include\10.0.xxxxx.0\um\gl\GL.h
里面有一行:#define GL_VERSION_1_1 1,这里就可以看出 openGL 的版本
截止到 2017 年 9 月,openGL 已经发布了 4.6 版本,然而 Windows 系统对 OpenGL 的支持只局限于1.1版本以下,这样的话理论只能使用一些老函数,超过 1.1 版本的新函数都无法使用,更何况从3.0版本开始,OpenGL就已经摒弃了早期版本的固定管线,升级到了现代OpenGL,但是没关系,我们可以更新显卡驱动,并且还有一些类似于 glew 的扩展库来帮助我们,让我们能够使用新的函数,尽管在使用上有着略微的区别
六、glew、glad、glut、glfw 的一句话介绍
- glew:是对底层 OpenGL 接口的封装,可以让你的代码跨平台
- glad:和 glew 作用相同,glew 的升级版
- glut:处理 OpenGL 程式的工具库,负责处理和底层操作系统的呼叫以及I/O
- glfw:glut 的升级版