منو و زیر منو در opengl +مثال
طریقه ایجاد منو از طریق تابع:
int id=glutCreateMenu(mymenu);
تعریف ورودی های منو (منظور همون گزینه های منو است)
glutAddMenuEntry("نام گزینه",id);
تعریف زیر منو از طریق :
glutAddSubMenu("نام زیر منو",id);
در اخر هم منو رو با یکی از کلیدهای موس متصل میکنیم:
glutAttachMenu(GLUT_RIGHT_BUTTON);
توضیح پارامترها برام سخت بود که بنویسمشون یه مثال گذاشتم:
#include
int s=-1;
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
if(s==0)
{
glClearColor(1.0,0.0,1.0,1.0); //pink
glClear(GL_COLOR_BUFFER_BIT);
}
if(s==1)
{
glClearColor(0.0,0.0,1.0,1.0); //blue
glClear(GL_COLOR_BUFFER_BIT);
}
if(s==2)
{
glClearColor(1,0,0,1); //red
glClear(GL_COLOR_BUFFER_BIT);
}
glFlush();
}
void mymenu(int id)
{
if(id==1)
{
s=0;
glutPostRedisplay();
}
if(id==2)
exit(0);
if(id==3)
{
s=1;
glutPostRedisplay();
}
if(id==4)
{
s=2;
glutPostRedisplay();
}
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutCreateWindow("Menu");
glutDisplayFunc(display);
////////////////////////////
int menu_ids=glutCreateMenu(mymenu);
glutAddMenuEntry("pink", 1);
glutAddMenuEntry("red",4);
glutAddMenuEntry("blue", 3);
int id_id=glutCreateMenu(mymenu);
glutAddSubMenu("COLORS",menu_ids);
glutAddMenuEntry("exit",2);
glutAttachMenu(GLUT_RIGHT_BUTTON);
////////////////////////////////////////////
glutMainLoop();
return 0;
}