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++ 在mainEventLoop()之后创建OpenGL/GLUT窗口_C++_Opengl_Glut_Freeglut_Glutcreatewindow - Fatal编程技术网

C++ 在mainEventLoop()之后创建OpenGL/GLUT窗口

C++ 在mainEventLoop()之后创建OpenGL/GLUT窗口,c++,opengl,glut,freeglut,glutcreatewindow,C++,Opengl,Glut,Freeglut,Glutcreatewindow,我正在用OpenGL/GLUT开发一个游戏,我需要打开一个新窗口来显示游戏获胜时的分数 为此,我将调用glutCreateWindow(),并在调用mainEventLoop()后注册回调 这有什么问题吗?我应该怎样做才好 这有什么问题吗 对 你为什么不在游戏的同一个窗口里画出结果呢 首先,为什么要使用GLUT?这不是一个很好的游戏框架。最好使用GLFW或SDL 我应该怎样做才好 通过在引擎中添加一个小型GUI系统,您可以在屏幕上覆盖统计数据(如HUD)和分数屏幕。您需要两个显示回调函数,dis

我正在用OpenGL/GLUT开发一个游戏,我需要打开一个新窗口来显示游戏获胜时的分数

为此,我将调用
glutCreateWindow()
,并在调用
mainEventLoop()
后注册回调

这有什么问题吗?我应该怎样做才好

这有什么问题吗

你为什么不在游戏的同一个窗口里画出结果呢

首先,为什么要使用GLUT?这不是一个很好的游戏框架。最好使用GLFW或SDL

我应该怎样做才好


通过在引擎中添加一个小型GUI系统,您可以在屏幕上覆盖统计数据(如HUD)和分数屏幕。

您需要两个显示回调函数,
display()
display2()
用于每个窗口以及
window=createwindow(“window 1”)
window2=createwindow(“window2”)

代码示例:

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <GL/glut.h>

int window2 = 0, window = 0, width = 400, height = 400;

void display(void)
{
    glClearColor(0.0, 1.0, 1.0, 1.0);
    glClear(GL_COLOR_BUFFER_BIT);
    glLoadIdentity();
    printf("display1\n");
    glFlush();
}

void display2(void)
{
    glClearColor(1.0, 0.0, 0.0, 1.0);
    glClear(GL_COLOR_BUFFER_BIT);
    glLoadIdentity();
    printf("display2\n");
    glFlush();
}

void reshape (int w, int h)
{
    glViewport(0,0,(GLsizei)w,(GLsizei)h);
    glutPostRedisplay();
}

int main(int argc, char **argv)
{
    // Initialization stuff
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB);
    glutInitWindowSize(width, height);

    // Create  window main
    window = glutCreateWindow("Window 1");
    glutDisplayFunc(display);
    glutReshapeFunc(reshape);
    glutInitWindowPosition(100,100);

    // Create second window
    window2 = glutCreateWindow("Window 2");
    glutDisplayFunc(display2);
    glutReshapeFunc(reshape);

    // Enter Glut Main Loop and wait for events
    glutMainLoop();
return 0;
}
#包括
#包括
#包括
#包括
int window2=0,window=0,width=400,height=400;
作废显示(作废)
{
glClearColor(0.0,1.0,1.0,1.0);
glClear(GLU颜色缓冲位);
glLoadIdentity();
printf(“display1\n”);
glFlush();
}
无效显示2(无效)
{
glClearColor(1.0,0.0,0.0,1.0);
glClear(GLU颜色缓冲位);
glLoadIdentity();
printf(“display2\n”);
glFlush();
}
空洞重塑(整数w,整数h)
{
gl(0,0,(GLsizei)w,(GLsizei)h);
再发现();
}
int main(int argc,字符**argv)
{
//初始化内容
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_RGB);
glutInitWindowSize(宽度、高度);
//创建主窗口
窗口=窗口(“窗口1”);
glutDisplayFunc(显示器);
GLUTREFORUNC(重塑);
位置(100100);
//创建第二个窗口
窗口2=窗口(“窗口2”);
glutDisplayFunc(显示2);
GLUTREFORUNC(重塑);
//进入Glut主循环并等待事件
glutMainLoop();
返回0;
}

谢谢。我刚刚开始学习计算机图形学,所以这就是为什么我使用glut,更准确地说是freeglut。那么我想知道的是,是否可以按照我的要求执行?@coredump:您可以从用户输入事件和空闲处理程序创建其他窗口。但创建额外的窗口只会分散用户的注意力。对于一场比赛来说,这显然不是正确的方法。