概述:
GLUT与任意窗口系统无关,使用GLUT子程序来建立和显示窗口可以使程序不依赖于任意的特定计算机。
函数:
glutInit( &argc, argv);//参数与主程序相同
glutInitDisplayMode( mode );//用来选择颜色模式和不同的缓存组合;
glutInitWindowPosition( xTopLeft, yTopLeft);//参数为显示窗口左上角相对于屏幕左上角的整型屏幕坐标位置。如果为负值,则由窗口系统来确定显示窗口的位置。
glutInitWindowSize(dwWidth, dwHeight);
1、创建窗口
windowID = glutCreateWindow( "Test");
其中windowID为创建的窗口的标识,唯一。
2、删除窗口
glutDestoryWIndow( windowID);
3、设置窗口为当前显示窗口(current display window)
glutSetWindow( windowID);
4、获得当前显示窗口
currentWindowID = glutGetWindow();
注:在没有显示窗口或当前显示窗口已被删除的情况下返回0;
5、改变当前显示窗口的位置
glutPositionWIndow( xNewTopLeft, yNewTopLeft);
6、设定当前显示窗口的尺寸
glutReshapeWindow( dwNewWidth, dwNewHeight);
7、将当前窗口扩展到整个屏幕(全屏显示)
glutFullScreen();
8、相应窗口尺寸改变的回调:可以使用该函数来调整显示窗口的变化
glutReshapeFunc();
9、将当前窗口变成一个图标,()
glutIconifyWindow();
10、设置图标名字:
glutSetIconTitle( "Icon Name");
11、改变窗口标题
glutSetWindowTitle("New Window Name");
12、将窗口设置为当前显示窗口并且置顶:
glutSetWindow( windowID);
glutPopWindow();
13、将窗口设置为显示窗口并且置为最底层
glutSetWindow( windowID);
glutPushWindow( );
14、隐藏和显示窗口
glutHideWindow();
glutShowWindow();
15、创建子窗口
glutCreateSubWindow( windowID, xBottonLeft, yBottomLeft, width, height);
注:WindowID标识父窗口,其余参数指定子窗口在显示窗口中的定位。
注:子窗口可以重定位、重定型、置顶、置底、显示、隐藏,但是不能最小化。
16、为当前窗口设定屏幕光标的形状
glutSetCursor( shape);
17、显示回调函数
glutDiaplayFunc();
18、在窗口需要重绘时调用:
glutPostRedisplay();
19、开启消息循环,执行程序
glutMainLoop();
20、指定系统空闲时间的处理函数:
glutIdleFunc( function );
21、查询系统某些参数的当前值
glutGet( stateParam );
例如:glutGet( GLUT_WINDOW_X);获得当前显示窗口左上角相对于屏幕左上角的x坐标位置。GLUT_WINDOW_WIDTH获得当前显示窗口宽度,GLUT_SCREEN_WIDTH获得屏幕宽度。
其他OpenGL操作技巧窗口:
1、去除OpenGL控制台程序的命令行窗口,仅显示创建的OpenGL窗口
方法一:
在程序中加入 #pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")
此方法在VS2010中不适用。
方法二:
(1)、在项目属性中,切换到“链接器”->系统,右侧窗口的子系统选择:窗口 (/SUBSYSTEM:WINDOWS) ;
(2)、在项目属性中,再切换到“链接器”->命令行,在“其他选项”中输入:/ENTRY:mainCRTStartup (可以去除程序运行时出现的dos窗口)
(3)、选择项目属性,选择C/C++->预处理器,在右侧的“预处理器定义”处,删除“_CONSOLE“;(经测试发现,这一步不操作也可以)
此方法 在VS2010中是有效的。