在Windows 7 64位上调用glBegin()后无效

时间:2016-03-11 10:33:13

标签: opengl glfw

我是OpenGL的初学者。在Windows 7 64位上配置开发环境后,使用vs2012,当我从gflw网站运行演示程序时没有任何效果。

这里是代码

void runRenderLoop(GLFWwindow *window){

glfwMakeContextCurrent(window);
glfwSwapInterval(1);
glfwSetKeyCallback(window,keyCallback);

while (!glfwWindowShouldClose(window)) {
    int width;
    int height;
    glfwGetFramebufferSize(window,&width,&height);
    glViewport(0,0,width,height);
    glClear(GL_COLOR_BUFFER_BIT);

    GLfloat ratio = static_cast<GLfloat>(width)/static_cast<GLfloat>(height);

    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(-ratio, ratio, -1.f, 1.f, 1.f, -1.f);

    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    glRotatef((float) glfwGetTime() * 50.f, 0.f, 0.f, 1.f);

    glBegin(GL_TRIANGLES);
        glColor3f(1.f, 0.f, 0.f);
        glVertex3f(-0.6f, -0.4f, 0.f);
        glColor3f(0.f, 1.f, 0.f);
        glVertex3f(0.6f, -0.4f, 0.f);
        glColor3f(0.f, 0.f, 1.f);
        glVertex3f(0.f, 0.6f, 0.f);
    glEnd();

    glfwSwapBuffers(window);
    glfwPollEvents();
}
glfwMakeContextCurrent(NULL);

glfwDestroyWindow(window);
glfwTerminate();

}

奇怪的是,我可以看到窗口是正确创建的,当我在glBegin()和glEnd()之间附加断点时,它也会正确触发。此外,glfw完美地处理我的keyCallback。然而,窗户是完全黑暗的,没有任何东西。这让我很困惑

我目前的opengl版本是3.2

1 个答案:

答案 0 :(得分:1)

  

我目前的opengl版本是3.2

如果这是核心配置文件上下文(没有兼容性),则glBegin / glEnd和朋友使用无效:它们已从OpenGL-3核心及以后删除。