gpt4 book ai didi

c - 打开和关闭 GLFW 窗口后无法获取控制台输入

转载 作者:太空宇宙 更新时间:2023-11-04 00:09:09 24 4
gpt4 key购买 nike

我正在使用 GLFW 开发一个应用程序,用户可以在控制台中输入一些信息,程序对这些信息进行一些处理,然后打开一个 opengl 窗口(使用 GLFW)来显示结果。然后用户可以关闭窗口,返回到主菜单并根据需要输入更多信息。

目前我遇到的问题是,一旦关闭 GLFW/OpenGL 窗口,控制台就不再接受来自 scanf() 的任何输入。我相当确定我正在正确关闭 GLFW,所以我不确定问题出在哪里。

我使用的代码如下:

主要.c:

#include <stdio.h>
#include <stdlib.h>
#include "glfw.h"
#include "pantograph.h"
int main(int argc, char** argv)
{
printf("program start");
int a = 0;
scanf("%i",&a); //this works
printf("%c",a);
p_open_window(1000, 500, 0, "hi there");
int i = 0;
for(i=0;i<1000;i++)
{
p_begin_render();
glBegin(GL_POINTS);
glVertex2i(i,i/2);
glEnd();
scanf("%i",&a);
p_end_render();
}
p_close_window();
scanf("%i",&a); //this does not work
printf("%i",a);
return 0;
}

受电弓.h:

int p_open_window(int width, int height, int fullscreen, const char* title)
{
glfwInit();
glfwDisable(GLFW_AUTO_POLL_EVENTS);
if(fullscreen)
{
glfwOpenWindow(width,height,8,8,8,8,0,0,GLFW_FULLSCREEN);
}else{
glfwOpenWindowHint(GLFW_WINDOW_NO_RESIZE, GL_TRUE);
glfwOpenWindow(width,height,8,8,8,8,0,0,GLFW_WINDOW);
}

glViewport(0, 0, width, height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, width, height, 0, 0, 1);
glMatrixMode(GL_MODELVIEW);
glDisable(GL_DEPTH_TEST);

glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
return 1;
}
void p_begin_render()
{
glClearColor(0.0, 0.0, 0.0, 1.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glColor4f(1.0, 1.0, 1.0, 1.0);
glLoadIdentity();
}
void p_end_render()
{
glfwSwapBuffers();
}
void p_close_window()
{
glfwCloseWindow();
glfwTerminate();
}

最佳答案

我对你的程序流程有点困惑。你说'用户可以关闭窗口并返回到主菜单'。但是程序如何退出(i<1000)循环呢?如果用户只是关闭窗口,它似乎仍在执行 for 循环(特别是因为循环内的 scanf)。

您是否使用调试器来查看您的程序在哪个点上被捕获了?

关于c - 打开和关闭 GLFW 窗口后无法获取控制台输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10283753/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com