Я разрабатываю графический проект с OpenGL и используя freeglut и glew (v 1.11.0). Я хочу добавить суммарные элементы управления пользовательским интерфейсом с помощью GLUI. Я загружаю исходный код и создаю его с помощью Microsoft Visual Studio 2012 (я пробовал версию GLUI и 2.35 и 2.36). Добавьте файл lib в библиотеки проектов без проблем. Итак, теперь я могу использовать GLUI в проекте.
Но есть проблема с отображением элементов управления. Я пытаюсь добавить мое окно GLUI в качестве основного окна моего окна. Нет проблем с добавлением subwindow, reshape и т. Д. Кроме того, я могу добавить элементы управления и в подзаголовок. Но, добавляя их, они не появляются в подпоследовательности. Интересно, что они на самом деле там. Когда я нажимаю кнопку примерно на месте, у них есть эффект, чтобы связанная функция обратного вызова контролировала, она вызывает эту функцию и делает ее работу.
Также я попробовал автономное окно GLUI вместо подзаголовка, но результат такой же.
Вот мой код:
Элементы управления GLUI не отображаются, но они имеют эффект
GLUI* glui_subwin = GLUI_Master.create_glui_subwindow(mainWindowID,GLUI_SUBWINDOW_BOTTOM);
GLUI_Button* b_RotateX = glui_subwin->add_button("Rotate X", 0, (GLUI_CB)CB_rotate);
glui_subwin->add_column(true);
GLUI_Button* b_RotateY = glui_subwin->add_button("Rotate Y", 1, (GLUI_CB)CB_rotate);
glui_subwin->add_column(true);
GLUI_Button* b_RotateZ = glui_subwin->add_button("Rotate Z", 2, (GLUI_CB)CB_rotate);
glui_subwin->add_column(true);
...
glui_subwin->set_main_gfx_window(mainWindowID);
GLUI_Master.set_glutKeyboardFunc(keyboard);
GLUI_Master.set_glutSpecialFunc(NULL);
GLUI_Master.set_glutMouseFunc(mouse);
GLUI_Master.set_glutReshapeFunc(reshape);
GLUI_Master.set_glutIdleFunc(idle);
Есть ли кто-нибудь справилась с этой проблемой, или что есть идея, что проблема есть?
Буду признателен, если вы мне поможете.
Спасибо за ваш ответ. Как и сказал, речь идет о устаревших функциях. Я использовал glutInitContextVersion (3, 2); функция. Он блокирует glui и делает элементы управления невидимыми. Когда я использую функцию 3,1 при работе, она работает правильно. Но, я должен прокомментировать glutInitContextFlags (GLUT_FORWARD_COMPATIBLE); вызов функции. – onrrgn
@onrrgn: Да, передняя совместимость подразумевает профиль сердечника. Обратите внимание, что «форвардная совместимость» - это нечто иное, чем «профиль обратной совместимости»; это на самом деле обратное. – datenwolf