这是我正在使用的代码
#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)){
}
}
每当我运行程序时,窗口都会显示,但是当窗口打开时,它会显示窗口后面的图像。
当我调整窗口大小或移动窗口时,它会发生变化。
答案 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);
}