現在、C++でOpenGL 2.1/Freeglutプロジェクトを作成中です。glutMainLoop()関数を使用してglutループから戻り値を取得する必要があります。プログラム。私が今見つけた解決策は、glutLeaveMainLoop()を呼び出すことですが、プログラムを完全に残しています。Freeglut/OpenGL 2.1プロジェクトからの戻り値の取得
これは私の質問です。現在のプログラムを残すことなくglutウィンドウを閉じるために、glutはそのような動作を許可しないので、FreeGLutの終了関数に戻り値を直接設定する方法はありますか? ?
私の質問がばかばかしくて、読んでくれてありがとうございます。
int MenuStatus; //will be edit during the process
void runMainLoop(int val) //called by glutTimerFunc below
{
update();
render();
glutTimerFunc(1000/SCREEN_FPS, runMainLoop, val);
//In this statement, I need the program to leave the glutMainLoop()
if (MenuStatus > 0)
glutLeaveMainLoop();
}
int HandleMenu(int ac, char **av)
{
glutInit(&ac, av);
glutInitContextVersion(2, 1);
glutInitDisplayMode(GLUT_DOUBLE);
glutInitWindowSize(SCREEN_WIDTH, SCREEN_HEIGHT);
glutCreateWindow("Arcade - OpenGL");
if (!initGL())
{
std::cerr << "Unable to initialize graphics library!" << std::endl;
return 1;
}
glutKeyboardFunc(handleKeys);
glutDisplayFunc(render);
//runMainLoop callback
glutTimerFunc(1000/SCREEN_FPS, runMainLoop, 0);
glutMainLoop();
//return statement never reached.
return MenuStatus;
}
ご迷惑をおかけして申し訳ございませんが、より理解していただければ幸いです。あなたがglutMainLoop();
を呼び出す前に
こんにちはLezard、ようこそstackoverflow、あなたのコードスニペットをあなたがこれまでに試したことをどのようなエラーが直面している共有してください。 – ravi
@raviありがとうございました、今、より明確になることを願っています。 –
メインループを離れる必要があるのはなぜですか?あなたは全体的に何を達成しようとしていますか? – Vallentin