改变胶窗的大小

时间:2010-12-10 09:01:53

标签: glut glui

有人能告诉我是否有改变胶窗尺寸的功能?也有人知道如何添加滚动条到过剩窗口? 提前完成。

2 个答案:

答案 0 :(得分:4)

你尝试过glutReshapeWindow吗?

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()也是由回调执行的,所以这就是答案。