グリッドを表示しようとすると、グリッドがまったく表示されない[複製]

Nov 26 2020

作成しようとしているゲームに追加するオプションとしてグリッドをオンにするかオフにするかを選択できるオプションポップアップメニューを作成しようとしています。「グリッドオン」と「グリッドオフ」の2つのオプションがあるポップアップメニューを表示することができましたが、クリックしてもグリッドがまったく表示されないので、苦労しています。

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

回答

1 genpfault Nov 26 2020 at 07:08
  1. メニューコールバックでグローバル(またはウィンドウ固有)ブール値を切り替えます
  2. glutPostRedisplay()メニュー内コールバックを発行します
  3. グローバルブール値を使用して、ディスプレイコールバックでグリッドを描画する/描画しない