尝试设置以下一个或多个OpenGL标志:
glfwOpenWindowHint(GLFW_OPENGL_VERSION_MAJOR, 3);
glfwOpenWindowHint(GLFW_OPENGL_VERSION_MINOR, 3);
glfwOpenWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
glfwOpenWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
Run Code Online (Sandbox Code Playgroud)
让glfwOpenWindow失败.为什么会这样?
[编辑]这似乎与主要= 3和MINOR = 2的工作,但代码上(的MacBook视网膜Mid2012)运行在笔记本电脑可以运行多达OpenGL的4.1(英特尔HD 4000有OpenGL 4.0,英伟达GT 650M拥有4.1) .[/编辑]
此外,虽然它可能不相关,但glfwGetGLVersion返回0所有三个参数.
完整示例代码如下:
int main(int argc, char * argv[])
{
if(!glfwInit()) {
return EXIT_FAILURE;
}
glfwOpenWindowHint(GLFW_WINDOW_NO_RESIZE, GL_TRUE);
//glfwOpenWindowHint(GLFW_OPENGL_VERSION_MAJOR, 3);
//glfwOpenWindowHint(GLFW_OPENGL_VERSION_MINOR, 3);
//glfwOpenWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
//glfwOpenWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
{
int *major = new int, *minor = new int, *rev = new int;
glfwGetGLVersion(major, minor, rev);
std::cout << *major << " " << *minor << " " << *rev << std::endl;
delete major;
delete minor;
delete rev;
}
if(!glfwOpenWindow(512,512,
8,8,8,
8,24,8,
GLFW_WINDOW)) {
return EXIT_FAILURE;
// APPLICATION EXITS HERE IF ONE OF THE FLAGS ARE SET.
}
while (glfwGetWindowParam(GLFW_OPENED)) {
glClear(GL_COLOR_BUFFER_BIT);
glfwSwapBuffers();
}
glfwTerminate();
return 0;
}
Run Code Online (Sandbox Code Playgroud)