Можно ли создать всплывающее меню, чтобы изменить или модифицировать свойство освещения в OpenGL с помощью SDL?
Я пытаюсь использовать glutCreateMenu();
:
void mydisplay()
{
//glClear(GL_COLOR_BUFFER_BIT);
GLfloat tp_ambient[] = { 0.05,0.05,0.05,1 };
GLfloat tp_diffuse[] = { 0.7,0.3,1,1 };
GLfloat tp_specular[] = { 0.6,0.6,0.6,1 };
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, tp_ambient);
glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, tp_diffuse);
glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, tp_specular);
glPushMatrix();
glTranslatef(0.0f, 0.0f, -0.6f);
GLUquadricObj *quadric = gluNewQuadric();
gluSphere(quadric, 0.1, 16, 16);
gluDeleteQuadric(quadric);
glPopMatrix();
/*
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(0.0f, 0.0f, -0.1f);*/
glutCreateMenu(ProcessMenu);
glutAddMenuEntry("position change", 0);
glutAttachMenu(GLUT_RIGHT_BUTTON);
}
void ProcessMenu(int value) {
if (value == 0) {
GLfloat ambient[] = { 0.1,0.1,0.1,1 };
}
glutPostRedisplay();
}
Но я получаю эту ошибку:
Ошибка C2065 'ProcessMenu': необъявленный идентификатор
Что нужно настроить?
Правильно ли я использую всплывающее меню?
Если вам полезно просмотреть весь мой код, посмотрите мой предыдущий решенный вопрос<20895556942246>.
Вам нужно переместить
void ProcessMenu(int value) { ... }
до того места, где он используется (или объявить его вперед).@RichardCritten Ic, ошибка C2065 решена
@Rabbid76 OpenGL
Мне жаль, что я был глуп перед кодированием. Здесь я хочу попробовать glutCreateMenu(); в OpenGL @Rabbid76
Если вы новичок, вы можете рассмотреть возможность изучения современного OpenGL вместо используемой вами версии 20-летней давности.
Я бы посоветовал вам посмотреть на дорогой imgui.