// Draw method void displayFcn() { int xc = winWidth / 2, yc = winHeight / 2; float green[3] = {0.0, 0.75, 0.0}; float orange[3] = {1.0, 0.6, 0}; float red[3] = {1.0, 0.0, 0.0}; float blue[3] = {0.0, 0.0, 1.0}; // Clear display window. glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0, 0.0, 0.0); Sun sun("Sun", xc, yc, 3.0); glColor3fv(green); Planet earth("Earth", xc, yc, 1.0, 1.0); glColor3fv(orange); Planet mercury("Mercury", xc, yc, 0.382, 0.39); glColor3fv(blue); Planet venus("Venus", xc, yc, 0.949, 0.72); glColor3fv(red); Planet mars("Mars", xc, yc, 0.532, 1.52); glFlush( ); }
void displayevent(void) { // limpia la escena (ventana) glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); loadSkyBox(); // inicializa la Matriz de transformación de coordenadas (Matriz del Modelo) glLoadIdentity(); // verfica superficies visibles glEnable( GL_DEPTH_TEST ); menuChoise( ); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); //Dibujamos los planetas sol ( sol_[0],sol_[1],sol_[2] ); mercurio ( mercurio_[0], mercurio_[1], mercurio_[2] ); venus ( venus_[0], venus_[1], venus_[2] ); tierra ( tierra_[0], tierra_[1], tierra_[2] ); marte ( marte_[0], marte_[1], marte_[2] ); jupiter ( jupiter_[0], jupiter_[1], jupiter_[2] ); saturno ( saturno_[0], saturno_[1], saturno_[2] ); urano ( urano_[0], urano_[1], urano_[2] ); neptuno ( neptuno_[0], neptuno_[1], neptuno_[2] ); pluton ( pluton_[0], pluton_[1], pluton_[2] ); glutSwapBuffers(); }
// main func is temporary ugly int main(int argc, char ** argv) { srand(time(NULL)); glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH | GLUT_MULTISAMPLE | GLUT_ACCUM); glutInitWindowPosition(glutGet(GLUT_SCREEN_WIDTH) / 14, glutGet(GLUT_SCREEN_HEIGHT) / 21); glutInitWindowSize(glutGet(GLUT_SCREEN_WIDTH) * 6 / 7, glutGet(GLUT_SCREEN_HEIGHT) * 6/7); int window = glutCreateWindow("Star System"); //glutFullScreen(); glEnable(GL_ACCUM); glEnable(GL_DEPTH_TEST); //glEnable(GL_LINE_SMOOTH); //glEnable(GL_CULL_FACE); glEnable(GL_LIGHTING); //glCullFace(GL_BACK); //glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE); glutInitContextFlags(GLUT_FORWARD_COMPATIBLE); TwInit(TW_OPENGL, NULL); glutDisplayFunc(GlutCB::Display); glutReshapeFunc(GlutCB::Reshape); glutMouseFunc(GlutCB::Mouse); glutMotionFunc(GlutCB::Motion); glutPassiveMotionFunc(GlutCB::PassiveMotion); glutKeyboardFunc(GlutCB::Keyboard); glutKeyboardUpFunc(GlutCB::KeyboardUp); glutSpecialFunc(GlutCB::Special); glutSpecialUpFunc(GlutCB::SpecialUp); TwGLUTModifiersFunc(glutGetModifiers); glutTimerFunc(Constants::deltaTime, GlutCB::Timer, 1); glClearColor(0.0f, 0.0f, 0.0f, 1.0f); Star sun("Sun", 2.0e30, 1.4e9, Vector3f(1.0f, 1.0f, 0.0f), Vector3d(0.0, 0.0, 0.0), Vector3d(0.0, 0.0, 0.0)); Planet mercury("Mercury", 3.3e23, 5.0e6, Vector3f(0.8f, 0.0f, 0.0f), Vector3d(4.6e10, 0.0, 0.0), Vector3d(0.0, 4.7e4, 0.0)); Planet venus("Venus", 4.8e24, 1.2e7, Vector3f(0.8f, 0.6f, 0.7f), Vector3d(1.0e11, 0.0, 0.0), Vector3d(0.0, 3.5e4, 0.0)); Planet earth("Earth", 6.0e24, 1.2e7, Vector3f(0.0f, 0.0f, 1.0f), Vector3d(1.5e11, 0.0, 0.0), Vector3d(0.0, 3.0e4, 0.0)); Sputnik moon("Moon", 7.35e22, 3.4e6, Vector3f(0.7f, 0.7f, 0.7f), &earth, Vector3d(4.0e8, 0.0, 0.0), Vector3d(0.0, 1.0e3, 0.0)); Planet mars("Mars", 6.4e23, 6.7e6, Vector3f(1.0f, 0.0f, 0.0f), Vector3d(2.0e11, 0.0, 0.0), Vector3d(0.0, 2.4e4, 0.0)); Teapot rasselsTeapot("RasselsTeapot", 0.0, 0.3, Vector3f(1.0f, 1.0f, 1.0f), Vector3d(3.0e11, 0.0, 0.0), Vector3d(0.0, 2.0e4, 0.0)); Planet jupiter("Jupiter", 1.9e27, 1.3e8, Vector3f(1.0f, 0.8f, 0.0f), Vector3d(7.4e11, 0.0, 0.0), Vector3d(0.0, 1.3e4, 0.0)); RenderManager * renderManager = RenderManager::getInstance(); renderManager->initAll(); Camera * camera = new Camera(); ControlPane * ctrlPane = ControlPane::getInstance(camera, renderManager); ctrlPane->show(); TwCopyStdStringToClientFunc(CopyStdStringToClient); ctrlPane->addSpaceObject(&sun); renderManager->renderSpaceObject(&sun); ctrlPane->addSpaceObject(&mercury); renderManager->renderSpaceObject(&mercury); ctrlPane->addSpaceObject(&venus); renderManager->renderSpaceObject(&venus); ctrlPane->addSpaceObject(&earth); renderManager->renderSpaceObject(&earth); ctrlPane->addSpaceObject(&moon); renderManager->renderSpaceObject(&moon); ctrlPane->addSpaceObject(&mars); renderManager->renderSpaceObject(&mars); ctrlPane->addSpaceObject(&rasselsTeapot); renderManager->renderSpaceObject(&rasselsTeapot); ctrlPane->addSpaceObject(&jupiter); renderManager->renderSpaceObject(&jupiter); GlutCBInitializer::init(camera, renderManager); glutMainLoop(); delete ctrlPane; glutDestroyWindow(window); return EXIT_SUCCESS; }