la grille ne s’affiche pas du tout lorsque j’essaye de l’utiliser [dupliquer]

Nov 26 2020

J'essaie de créer un menu contextuel d'options pour pouvoir choisir si je veux que la grille soit activée ou désactivée comme option à ajouter au jeu que j'essaie de créer. J'ai pu afficher le menu contextuel qui a deux options appelées «grille activée» et «grille désactivée», cependant lorsque je clique dessus, la grille ne montre pas du tout pour moi ce que j'ai du mal à faire.

void myGrid(GLint i) {
glEnable(GL_LINE_STIPPLE); //Activates the line-style feature

glLineStipple(1, 0xAAAA);  // Plots a dashed polyline

glColor3f(0.8, 0.8, 0.8);

glBegin(GL_LINES);
for (i = 2; i <= 9; i++)
{
    glVertex3f(i * 0.1 * w, 0.0, 0.0);
    glVertex3f(i * 0.1 * w, 0.9 * h, 0.0);
}

for (i = 1; i <= 9; i++)
{
    glVertex3f(0.1 * w, i * 0.1 * h, 0.0);
    glVertex3f(w, i * 0.1 * h, 0.0);
}
glEnd();
glDisable(GL_LINE_STIPPLE);
}

int main(int argc, char* argv[])//standard c entry signature
{
//cout << "Player Controls:\n Up Key - move forward\n Down Key - move backward\n Left/Right key - move left or right\n R/r - rotate";
/* window management code ... */
/* initialises GLUT and processes any command line arguments */
glutInit(&argc, argv);
/* use double-buffered window and RGBA colour model */
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA);
/* window width = 400 pixels, height = 400 pixels */
glutInitWindowSize(500, 500);
/* window upper left corner at (100, 100) */
glutInitWindowPosition(100, 100);
/* creates an OpenGL window and set its title bar*/
glutCreateWindow("Coursework 1");
init();

glutDisplayFunc(display);

//glutKeyboardFunc(keyboard);
//glutSpecialFunc(specialKeys);
//  glutSpecialUpFunc(keyGoneUp);

glutReshapeFunc(reshape);

//Create a grid turning it on and off
glutCreateMenu(myGrid);

glutAddMenuEntry("Grid on", 1);
glutAddMenuEntry("Grid off", 2);
glutAttachMenu(GLUT_RIGHT_BUTTON);
//  SetupRC();
glutIdleFunc(IdleFunc);
glutMainLoop();

return 0;
}

Réponses

1 genpfault Nov 26 2020 at 07:08
  1. Basculer le booléen global (ou spécifique à la fenêtre, selon vous) dans le rappel de menu
  2. Émettre un glutPostRedisplay()rappel dans le menu
  3. Utilisez le booléen global pour dessiner / ne pas dessiner la grille dans le rappel d'affichage