Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ FreeGLUT窗口在启动时消失_C++_Opengl_Glew_Freeglut - Fatal编程技术网

C++ FreeGLUT窗口在启动时消失

C++ FreeGLUT窗口在启动时消失,c++,opengl,glew,freeglut,C++,Opengl,Glew,Freeglut,我今天刚开始使用OpenGL,随后在VisualStudio2010中创建了一个OpenGL项目。 但是当我运行代码时,我看到一个窗口快速打开,闪烁着消失。这正常吗 #包括 #包括 #包括 使用名称空间std; //窗口大小调整后,此函数在main中被称为“GLUTREFORMATEDFUNC” 无效更改视口(int w,int h){ glViewport(0,0,w,h); } //这里有一个函数,在窗口需要重新绘制时调用。 //它是我们程序的“画图”方法,它的设置来自主界面中的glutDi

我今天刚开始使用OpenGL,随后在VisualStudio2010中创建了一个OpenGL项目。 但是当我运行代码时,我看到一个窗口快速打开,闪烁着消失。这正常吗

#包括
#包括
#包括
使用名称空间std;
//窗口大小调整后,此函数在main中被称为“GLUTREFORMATEDFUNC”
无效更改视口(int w,int h){
glViewport(0,0,w,h);
}
//这里有一个函数,在窗口需要重新绘制时调用。
//它是我们程序的“画图”方法,它的设置来自主界面中的glutDisplayFunc
void render(){
glClear(GL_颜色_缓冲_位| GL_深度_缓冲_位);
glutSwapBuffers();
}
int main(int argc,字符**argv){
//初始化过剩
glutInit(&argc,argv);
//为我们的显示器设置一些内存缓冲区
glutInitDisplayMode(GLUT_双精度| GLUT_RGBA | GLUT_深度);
//设置窗口大小
glutInitWindowSize(800600);
//创建带有标题的窗口
glutCreateWindow(“GL_HelloWorld”);
//绑定两个函数(以上)在必要时响应
GLUTEFUNC(更改视口);
glutDisplayFunc(渲染);
//非常重要!这将初始化OpenGL驱动程序中的入口点,以便我们可以
//调用API中的所有函数
GLenum err=glewInit();
如果(GLEW_OK!=错误){
fprintf(标准“GLEW错误”);
返回1;
}
}

您未通过以下方式进入GLUT事件处理循环:

int main(int argc,char**argv){
// [...]
glutDisplayFunc(渲染);
//非常重要!这将初始化OpenGL驱动程序中的入口点,以便我们可以
//调用API中的所有函数
GLenum err=glewInit();
如果(GLEW_OK!=错误){
fprintf(标准“GLEW错误”);
返回1;
}
//启动事件处理循环-导致第一次调用“渲染”
glutMainLoop();
返回0;
}
此函数从不返回、处理事件并执行回调,就像显示回调一样(
render
)。此函数处理主应用程序循环。 如果未调用此函数,则程序在创建窗口后立即终止

如果您希望应用程序不断地重画场景,那么您必须调用
render
。这将当前窗口标记为需要重新显示,并导致在事件处理循环中再次调用显示回调(
render
):

void render(){
glClear(GL_颜色_缓冲_位| GL_深度_缓冲_位);
//画场景
// [...]
glutSwapBuffers();
//标记要重新显示-导致连续调用“渲染”
再发现
}
谢谢你,Loop();返回0;工作