#ifdef G_OS_WIN32 #define WIN32_LEAN_AND_MEAN 1 #include #else #define FALSE 0 #define TRUE !FALSE #endif #include #include #include #include #include "menu.h" #define SCREEN_WIDTH 640 #define SCREEN_HEIGHT 480 void init_gl(void) { } // init_gl void render_blox(void) { static double l_dAngle = 0.0; glPushMatrix(); glTranslated(0, 0, -20); glTranslated(sin(l_dAngle * (float)3.1415 / 180.0f) * 5, sin(l_dAngle * (float)3.1415 / 180.0f) * 5, -5 + sin(l_dAngle * (float)3.1415 / 180.0f) * 5); glRotated(l_dAngle, 0.5, 0.5, 1); // draw big cube glutSolidCube(4); glPushMatrix(); // draw smaller cube glTranslated(0, sin(l_dAngle * (float)3.1415 / 180.0f) * 5, 0); glutSolidCube(2); glPopMatrix(); glPopMatrix(); l_dAngle += 0.1; } // render_blox void render_scene(void) { float l_pfMaterial[] = {1.0f, 0.4f, 0.0f, 0.0f}; glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glClearColor(1, 0.4, 0.2, 1); glDisable(GL_TEXTURE_2D); // enable default lighting glEnable(GL_DEPTH_TEST); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, l_pfMaterial); // render 3d shit glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(45, 1.0, 1.0, 100.0); glMatrixMode(GL_MODELVIEW); render_blox(); glDisable(GL_LIGHTING); MenuRender(); glutSwapBuffers(); } // render_scene void process_normal_keys(unsigned char key, int x, int y) { // escape if (key == 27) exit(0); if (key == ' ') MenuNext(); } // process_normal_keys void process_special_keys(int key, int x, int y) { switch (key) { // do sumting } } // process_special_keys void process_mouse(int button, int state, int x, int y) { MenuMouseClick(button, state, x, y); } // process_mouse void process_passive_mouse(int x, int y) { MenuMouseMove(x, y); } // process_passive_mouse int main(int argc, char **argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); glutInitWindowSize(SCREEN_WIDTH, SCREEN_HEIGHT); glutCreateWindow("Menu demo"); glutDisplayFunc(render_scene); glutIdleFunc(render_scene); glutKeyboardFunc(process_normal_keys); glutSpecialFunc(process_special_keys); glutMouseFunc(process_mouse); glutPassiveMotionFunc(process_passive_mouse); glutSetCursor(GLUT_CURSOR_NONE); init_gl(); MenuInit(SCREEN_WIDTH, SCREEN_HEIGHT); glutMainLoop(); return 0; } // main