2010-12-10 8 views
2

Quelqu'un peut-il me dire s'il existe une fonction pour changer la taille de la fenêtre glui? Aussi, quelqu'un a-t-il une idée sur la façon d'ajouter des barres de défilement à la fenêtre d'encombrement? Merci d'avance.Modification de la taille de la fenêtre glui

Répondre

4

avez-vous essayé glutReshapeWindow?

void glutReshapeWindow(int width, int height); 

glutReshapeWindow demande un changement de la taille de la fenêtre courante. Les paramètres width et height sont des extensions de taille en pixels. La largeur et la hauteur doivent être des valeurs positives.

+0

Je demande à propos de la fenêtre GLUI. Les fenêtres GLUT et GLUI sont différentes – Shweta

2

Vous n'avez pas spécifié la version que vous utilisez, mais la version 2.2 est fournie avec quelques exemples. Si vous cochez example5.cpp et example3.cpp, vous remarquerez qu'une fenêtre GLUI est créée au-dessus d'une fenêtre de GLUT (voir le code ci-dessous):

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 

Il semble que vous avez 2 options: le premier, exécuter la fonction de rappel myGlutReshape() directement pour voir si elle redimensionne la fenêtre (spécifié ci-dessous):

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(); 
} 

ou (la seconde), qui appelle glutReshapeWindow() pour changer les dimensions de la fenêtre (probablement suivi par glutPostRedisplay()).

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

Notez que glutReshapeWindow() est également exécutée par le rappel, donc ce froid être la réponse après tout.

Questions connexes