GLFWを使用してアプリケーションを開発しています。これにより、コンソールに情報を入力したり、情報を処理したり、GLFW )を押して結果を表示します。ユーザーはウィンドウを閉じてメインメニューに戻り、必要に応じて詳細情報を入力することができます。GLFWウィンドウの開閉後にコンソール入力に問題が発生しました
現在、問題は、GLFW/OpenGLウィンドウを閉じると、コンソールがscanf()からの入力を受け付けなくなってしまうことです。私はGLFWを適切に閉じていることをかなり確信しているので、問題が何であるかはわかりません。
私が使用していたコードは以下の通りです:
のmain.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;
}
pantograph.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();
}
奇妙に思えますが、何とかうまくいけば、私はopenglの呼び出しが黙って失敗すると思いますが、ループを終了するだけです。私は完全には確信していません。 いずれにせよ、私はそれを解決することができました。私はすぐに答えとして投稿します。 – AdamHarries