Как добавить разделитель в контекстные меню в OpenGL / GLUT - PullRequest
0 голосов
/ 07 марта 2011

Обычно это будет что-то вроде:

glutAddMenuEntry("-", <opid>);

Но это не работает. После поиска в Google я не смог найти много информации об этом, может быть, это невозможно с помощью GLUT? Я нашел пару примеров, таких как:

glutAddMenuEntry("-", 0);

или

glutAddMenuEntry("-", -1);

Но не сработало ...

#include <math.h>

#include <GL/glut.h>

#define WINDOW_WIDTH  640
#define WINDOW_HEIGHT 480

void changeSize(int w, int h) {
    if(h == 0) h = 1;

    float ratio = 1.0 * w / h;

    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();

    glViewport(0, 0, w, h);

    gluPerspective(45.0f, ratio, 1.0f, 1000.0f);

    glMatrixMode(GL_MODELVIEW);
}

void renderScene(void) {
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glLoadIdentity();

    gluLookAt(
        0.0, 0.0, 5.0,
        0.0, 0.0, 0.0,
        0.0f, 1.0f, 0.0f
    );

    glutWireTeapot(1.0);

    glutSwapBuffers();
}

void processMenuEvents(int option) {
}

void main(int argc, char **argv) {
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
    glutInitWindowPosition(
        (glutGet(GLUT_SCREEN_WIDTH) - WINDOW_WIDTH) / 2,
        (glutGet(GLUT_SCREEN_HEIGHT) - WINDOW_HEIGHT) / 2
    );
    glutInitWindowSize(WINDOW_WIDTH, WINDOW_HEIGHT);
    glutCreateWindow("Camera Demo");

    glutDisplayFunc(renderScene);
    glutReshapeFunc(changeSize);

    glutCreateMenu(processMenuEvents);

    glutAddMenuEntry("OPTION 1", 1);
    glutAddMenuEntry("-", -1);
    glutAddMenuEntry("OPTION 2", 2);

    glutAttachMenu(GLUT_RIGHT_BUTTON);

    glEnable(GL_DEPTH_TEST);
    glEnable(GL_CULL_FACE);

    glClearColor(0.0f, 0.0f, 0.0f, 0.0f);

    glutMainLoop();
}

Я не вижу разделителя, как в Windows, для других элементов, вместо этого я вижу метку пункта меню как тире.

1 Ответ

2 голосов
/ 12 марта 2011

Я только что трижды проверил всю мою документацию по GLUT: GLUT не поддерживает разделители меню!Лучшее, что вы можете сделать, это использовать строку «----» или аналогичную в качестве разделителя и игнорировать выбор этого пункта меню.

...