我的GLFW窗口显示其背后的内容

时间:2017-04-28 20:51:11

标签: c opengl glfw

这是我正在使用的代码

#include <stdio.h>
#include <stdlib.h>
#include <GL/glew.h>
#include <GLFW/glfw3.h>

int main(){
        if(!glfwInit()){
                fprintf(stderr,"failed glfw initialization");
                return -1;
        }

        GLFWwindow* window = glfwCreateWindow(800,800,"i hope this works",NULL,NULL);
        if (!window){
                fprintf(stderr,"window creation failed");
                return -1;
        }
        glfwMakeContextCurrent(window);
        glewExperimental = 1;
        if(glewInit() != GLEW_OK){
                fprintf(stderr,"glew failed to initialize");
                return -1;
        }
        while(!glfwWindowShouldClose(window)){
        }
}

每当我运行程序时,窗口都会显示,但是当窗口打开时,它会显示窗口后面的图像。

image description

当我调整窗口大小或移动窗口时,它会发生变化。

1 个答案:

答案 0 :(得分:1)

您需要清除缓冲区。如果你正在使用两个缓冲区,那么写:

// Render
// Clear the colorbuffer
glClearColor(0.1f, 0.1f, 0.1f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

在Game Loop的开头。

还写:

// Swap the screen buffers
glfwSwapBuffers(window);

在游戏循环结束时。

所有在一起:

while(!glfwWindowShouldClose(window)){
    // Render
    // Clear the colorbuffer
    glClearColor(0.1f, 0.1f, 0.1f, 1.0f);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    /* ... Code ... */

    // Swap the screen buffers
    glfwSwapBuffers(window);
}