我用的是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()函数呢??
主函数部分是:
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()函数呢??
解决方案 »
- 将double 转化为CString
- 自动创建VPN的程序在Win7下完美运行,XP系统下提示错误:632
- 点:ppstream://xxxxxxxxxxxxxxxxxxxxxx的连接启动 ppstream这个软件,这种怎么编程实现
- 刚用vc,求一个简单的多线程要同步的服务器,客户端下载程序
- c#,vc++7.0 vc++.net 之间是什么关系
- 为什么会出现这样的问题,关于UpdateData
- 请教一个有关动态菜单消息响应的问题
- 关于"vector"
- ocx的event是不是只提供个函数申明,没有实现,实现交由ocx的使用者来实现?
- MFC的通用对话框的新手问题
- 请大家帮忙,RichEidt 编辑框里的内容不能点击右键复制,怎样解决?
- 编写界面程序,用什么 语言编写程序比较好?
然后替换成PostQuitMessage(0);
用exit(0)是直接退出,不会调用后面的.而不是只推出MainLoop那个循环
和glut基本差不多,不同之处在于:freeglut和glut类似,一个比较重要的不同点在于freeglut库中的glutMainLoopEvent函数执行一次循环以后会返回控制权,
glut中的glutMainLoop()一旦进入循环就再也不返回
//
#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;
}
}