|
发表于 2023-10-11 22:24:43
|
显示全部楼层
MinGW的OpenGL版本过低,可以尝试使用GLEW或GLAD等第三方库来解决。这些库可以在运行时动态加载OpenGL函数,从而使得我们能够使用最新的OpenGL功能。
以下是使用GLEW的步骤:
1. 下载GLEW库,可以从官网上下载:http://glew.sourceforge.net/
2. 解压下载的GLEW库,将其中的glew.h和glew.c文件拷贝到你的项目中。
3. 在你的代码中包含glew.h头文件,并在你的代码中调用glewInit()函数,该函数会初始化GLEW库并加载OpenGL函数。
4. 在调用OpenGL函数之前,需要检查函数是否已经成功加载,可以使用glewIsSupported()函数来检查。
下面是一个使用GLEW的例子:
- #include <GL/glew.h>
- #include <GLFW/glfw3.h>
- #include <iostream>
- int main()
- {
- // 初始化GLFW库
- if (!glfwInit())
- {
- std::cerr << "Failed to initialize GLFW" << std::endl;
- return -1;
- }
- // 创建窗口
- GLFWwindow* window = glfwCreateWindow(640, 480, "OpenGL", NULL, NULL);
- if (!window)
- {
- std::cerr << "Failed to create GLFW window" << std::endl;
- glfwTerminate();
- return -1;
- }
- // 设置当前上下文
- glfwMakeContextCurrent(window);
- // 初始化GLEW库
- if (glewInit() != GLEW_OK)
- {
- std::cerr << "Failed to initialize GLEW" << std::endl;
- glfwTerminate();
- return -1;
- }
- // 检查OpenGL版本
- std::cout << "OpenGL version: " << glGetString(GL_VERSION) << std::endl;
- // 检查glCreateShader函数是否已经成功加载
- if (!glewIsSupported("GL_ARB_vertex_shader GL_ARB_fragment_shader GL_ARB_shader_objects GL_ARB_shading_language_100"))
- {
- std::cerr << "Failed to load OpenGL functions" << std::endl;
- glfwTerminate();
- return -1;
- }
- // 使用OpenGL函数
- GLuint shader = glCreateShader(GL_VERTEX_SHADER);
- // 清理资源
- glfwTerminate();
- return 0;
- }
复制代码 |
|