关于OpenGL(GULT库函数)窗口关闭函数。

morningl_77 2009-04-07 12:37:32
我用的是GULT库函数来实现的一个程序:
主函数部分是:
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB|GLUT_DEPTH|GLUT_ACCUM);
glutInitWindowSize(1000, 600);
glutInitWindowPosition(0, 0);
glutCreateWindow(argv[0]);
init();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutKeyboardFunc(keyboard);
glutMouseFunc(mouse);
glutMotionFunc(motion);
glutMainLoop();
AviGen.ReleaseEngine();
return 0;
}
我想问问为什么我的程序直到结束都无法调用AviGen.ReleaseEngine()函数呢??
...全文
1234 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
ryfdizuo 2009-04-09
  • 打赏
  • 举报
回复
//glut_loop.cpp
//
#include <GL/freeglut.h>
//
void render(void);
void keyFunc(unsigned char, int, int);
int window_id;
bool keep_running = true;
//
// A barebones GLUT application
//
int main()
{
// Create our OpenGL Window
int fake_argc = 1;
char* fake_argv;
glutInit(&fake_argc, &fake_argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
glutInitWindowSize(640, 480);
window_id = glutCreateWindow("GLUT Loop");
// Set the function to handle normal key presses
glutKeyboardFunc(keyFunc);
// Begin the loop
while(keep_running)
{
glutMainLoopEvent();
render();
glutSwapBuffers();
}
// Exit gracefully
glutDestroyWindow(window_id);
//退出函数处理,,,
return 0;
}
//
// This is where you'd draw a frame of your 3D application
//
void render()
{
glLoadIdentity();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// Look on my works, ye Mighty, and despair!
glutWireTeapot( 0.5 );
}
//
// Handler for normal keypressed
//
void keyFunc(unsigned char key, int x, int y)
{
switch (key)
{
case 113: // 'q',
case 81: // 'Q',
case 27: // 'ESC'
keep_running = false;
break;
}
}
ryfdizuo 2009-04-09
  • 打赏
  • 举报
回复
lz可以使用freeglut库
和glut基本差不多,不同之处在于:

freeglut和glut类似,一个比较重要的不同点在于freeglut库中的glutMainLoopEvent函数执行一次循环以后会返回控制权,
glut中的glutMainLoop()一旦进入循环就再也不返回
wangxipu 2009-04-08
  • 打赏
  • 举报
回复
看看这个函数的内脏
huojicha 2009-04-08
  • 打赏
  • 举报
回复
你把glutMainLoop()里面调用的那些回调函数里面的exit(0)去掉.
然后替换成PostQuitMessage(0);
用exit(0)是直接退出,不会调用后面的.而不是只推出MainLoop那个循环
morningl_77 2009-04-08
  • 打赏
  • 举报
回复
或者能不能将主函数改动使得程序执行完glutMainLoop()可以继续调用下面的函数呢?
morningl_77 2009-04-08
  • 打赏
  • 举报
回复
能告诉我OpenGL自己的资源释放函数都有那些吗吗?谢谢
jusen67 2009-04-08
  • 打赏
  • 举报
回复
用OpenGL自己的资源释放函数吧~~~
eagerle01 2009-04-08
  • 打赏
  • 举报
回复
好久没碰过OPENGL了
morningl_77 2009-04-08
  • 打赏
  • 举报
回复
自己顶一个
zhyinty 2009-04-07
  • 打赏
  • 举报
回复
AviGen 是什么 你的AviGen.ReleaseEngine()应该放在消息循环里面吧
morningl_77 2009-04-07
  • 打赏
  • 举报
回复
我最后那个函数是一个释放资源的函数,必须在程序运行结束后调用,那我该怎么办~~
fengling2001 2009-04-07
  • 打赏
  • 举报
回复
了解一下opengl的机制吧
力为 2009-04-07
  • 打赏
  • 举报
回复
glutMainLoop()里已经exit(0)了

19,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧