【发布时间】:2016-06-11 03:30:33
【问题描述】:
在对代码进行多次测试后,我确定 GLFW 和 GLEW 都已成功初始化,但当我尝试创建一个用于 GLFW 函数的 GLFWwindow* 对象时,glfwCreateWindow() 函数返回一个 nullptr .为什么会这样,我该如何解决?这是我的代码:
#include <iostream>
#define GLEW_STATIC
#include <GL/glew.h>
#include <GLFW/glfw3.h>
const GLuint windowWidth = 500, windowHeight = 500;
int main()
{
glfwInit();
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);
GLFWwindow* window = glfwCreateWindow(windowWidth, windowHeight, "Learn OpenGL", nullptr, nullptr);
if (window == nullptr) {
std::cout << "Failed to create GLFW window!" << std::endl;
char myvar1; std::cin >> myvar1;
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);
glewExperimental = GL_TRUE;
if (glewInit() != GL_TRUE) {
std::cout << "Failed to initialize GLEW" << std::endl;
char myvar2; std::cin >> myvar2;
return -1;
}
glViewport(0, 0, windowWidth, windowHeight);
while (!glfwWindowShouldClose(window)) {
glfwPollEvents();
glfwSwapBuffers(window);
}
glfwTerminate();
return 0;
}
【问题讨论】:
-
文档说“Windows:如果 Microsoft GDI 软件 OpenGL 实现是唯一可用的,则窗口创建将失败。”您使用的是什么显卡,是否有最新的驱动程序,您是在运行远程桌面还是在控制台会话中?
-
使用 1.9GHz Celeron 的板载显卡。我会尝试更新驱动程序。
-
使用 OpenGL Extensions Viewer 确认您的 GPU 确实支持 3.3。我遇到了同样的问题,事实证明 Parallels 的 GPU 仿真只能达到 3.2,但这就是我尝试在 VM 上做图形的结果。
标签: c++ visual-studio opengl glfw glew