2

gluiウィンドウのサイズを変更する機能があるかどうか教えてもらえますか? また、スクロールバーを大量のウィンドウに追加する方法について何か考えがある人はいますか? 事前にサンクス。

4

2 に答える 2

3

glutReshapeWindowを試しましたか?

void glutReshapeWindow(int width, int height);

glutReshapeWindowは、現在のウィンドウのサイズの変更を要求します。幅と高さのパラメーターは、ピクセル単位のサイズ範囲です。幅と高さは正の値である必要があります。

于 2011-02-21T14:49:19.690 に答える
2

使用しているバージョンを指定しませんでしたが、v2.2 にはいくつかの例が付属しています。example5.cppexample3.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 つのオプションがあるようです。1 つ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();
}

または(2番目glutReshapeWindow())、ウィンドウのサイズを変更するために呼び出しています(おそらくglutPostRedisplay()が続きます)。

glutReshapeWindow( 800, 600);
glutPostRedisplay(); // This call may or may not be necessary

もコールバックによって実行されることに注意してくださいglutReshapeWindow()。したがって、これは結局のところ答えです。

于 2011-02-22T17:04:50.193 に答える