有人能告诉我是否有改变胶窗尺寸的功能?也有人知道如何添加滚动条到过剩窗口? 提前完成。
答案 0 :(得分:4)
void glutReshapeWindow(int width, int height);
glutReshapeWindow请求更改当前窗口的大小。 width和height参数是以像素为单位的大小范围。宽度和高度必须为正值。
答案 1 :(得分:2)
您没有指定您使用的版本,但v2.2附带了一些示例。如果您选中 example5.cpp 和 example3.cpp ,您会注意到在GLUT窗口之上创建了一个GLUI窗口(请参阅下面的代码):
int main_window = glutCreateWindow( "GLUI Example" ); // Creating GLUT window
// Setting up callbacks
glutDisplayFunc( myGlutDisplay );
GLUI_Master.set_glutReshapeFunc( myGlutReshape ); // Humm, this could be it!
GLUI_Master.set_glutKeyboardFunc( myGlutKeyboard );
GLUI_Master.set_glutSpecialFunc( NULL );
GLUI_Master.set_glutMouseFunc( myGlutMouse );
// Blah Blah to create objects and make it fancy
GLUI* glui = GLUI_Master.create_glui( "GLUI", 0, 400, 500 ); // Create GLUI window
glui->set_main_gfx_window( main_window ); // Associate it with GLUT
所以看起来你有2个选项:第一个,直接执行回调myGlutReshape()
以查看它是否调整窗口大小(如下所示):
void myGlutReshape( int x, int y )
{
int tx, ty, tw, th;
GLUI_Master.get_viewport_area( &tx, &ty, &tw, &th );
glViewport( tx, ty, tw, th );
xy_aspect = (float)tw / (float)th;
glutPostRedisplay();
}
或(第二个),正在调用glutReshapeWindow()
来更改窗口尺寸(可能后跟 glutPostRedisplay())。
glutReshapeWindow( 800, 600);
glutPostRedisplay(); // This call may or may not be necessary
请注意,glutReshapeWindow()
也是由回调执行的,所以这就是答案。