/*avance ejercicio reflejo*/ #include "stdafx.h" GLfloat colors[][3] = { { 0.33,0.33,0.33 },{ 1.0,0.0,0.0 }, { 1.0,1.0,0.0 },{ 0.0,1.0,0.0 },{ 0.0,0.0,1.0 }, { 1.0,0.0,1.0 },{ 1.0,1.0,1.0 },{ 0.0,1.0,1.0 } }, shadowMat[16], vLuz[4] = { 2., 3.5, 0, 1. }, vPizo[4] = { 0.0f, 1.0f /*-1?*/, 0.0f, /*-*/3.5 /* 3.5 ?*/ }; #define GL_PI 3.1415f GLfloat xRot = 0.45f; GLfloat yRot = 0.35f; GLboolean bCull = glIsEnabled(GL_CULL_FACE); GLboolean bDepth = glIsEnabled(GL_DEPTH_TEST); GLboolean bOutline = (GLboolean)true; GLenum shademode = GL_FLAT; GLfloat ex = 0.0f; GLfloat ey = 50.0f; GLfloat ez = -300.0f; GLfloat delta = 0.01f; GLfloat deltaR = 0.01f; GLfloat ALFA = 0.75; void gltMakeShadowMatrix(GLfloat vPlaneEquation[], GLfloat vLightPos[], GLfloat destMat[]) { GLfloat dot; // Dot product of plane and light position dot = vPlaneEquation[0] * vLightPos[0] + vPlaneEquation[1] * vLightPos[1] + vPlaneEquation[2] * vLightPos[2] + vPlaneEquation[3] * vLightPos[3]; // Now do the projection // First column destMat[0] = dot - vLightPos[0] * vPlaneEquation[0]; destMat[4] = 0.0f - vLightPos[0] * vPlaneEquation[1]; destMat[8] = 0.0f - vLightPos[0] * vPlaneEquation[2]; destMat[12] = 0.0f - vLightPos[0] * vPlaneEquation[3]; // Second column destMat[1] = 0.0f - vLightPos[1] * vPlaneEquation[0]; destMat[5] = dot - vLightPos[1] * vPlaneEquation[1]; destMat[9] = 0.0f - vLightPos[1] * vPlaneEquation[2]; destMat[13] = 0.0f - vLightPos[1] * vPlaneEquation[3]; // Third Column destMat[2] = 0.0f - vLightPos[2] * vPlaneEquation[0]; destMat[6] = 0.0f - vLightPos[2] * vPlaneEquation[1]; destMat[10] = dot - vLightPos[2] * vPlaneEquation[2]; destMat[14] = 0.0f - vLightPos[2] * vPlaneEquation[3]; // Fourth Column destMat[3] = 0.0f - vLightPos[3] * vPlaneEquation[0]; destMat[7] = 0.0f - vLightPos[3] * vPlaneEquation[1]; destMat[11] = 0.0f - vLightPos[3] * vPlaneEquation[2]; destMat[15] = dot - vLightPos[3] * vPlaneEquation[3]; } void lineas() { glColor3f(0.0, 0., 0.); glBegin(GL_LINES); for (int i = 0; i < 10; i++) { glVertex2f(-1. + i * 2. / 9., 1.); glVertex2f(-1. + i * 2. / 9., -1.); glVertex2f(1, -1. + i * 2. / 9.); glVertex2f(-1., -1. + i * 2. / 9.); } glEnd(); } void cuadrado() { glBegin(GL_POLYGON); glVertex2f(1., 1.); glVertex2f(1., -1.); glVertex2f(-1., -1.); glVertex2f(-1., 1.); glEnd(); } void uncolored_cube(void) { /* map vertices to faces */ /*cara 1*/ glPushMatrix(); glTranslatef(0, 0, 1.); cuadrado(); glPopMatrix(); /*cara 2*/ glPushMatrix(); glRotatef(90., 0., 1., 0); glTranslatef(0, 0, 1.); cuadrado(); glPopMatrix(); /*cara 3*/ glPushMatrix(); glRotatef(180., 0., 1., 0); glTranslatef(0, 0, 1.); cuadrado(); glPopMatrix(); /*cara 4*/ glPushMatrix(); glRotatef(270., 0., 1., 0); glTranslatef(0, 0, 1.); cuadrado(); glPopMatrix(); /*cara 5*/ glPushMatrix(); glRotatef(90., 1., 0., 0); glTranslatef(0, 0, 1.); cuadrado(); glPopMatrix(); /*cara 6*/ glPushMatrix(); glRotatef(-90., 1., 0., 0); glTranslatef(0, 0, 1.); cuadrado(); glPopMatrix(); } void colorcube(void) { /* map vertices to faces */ /*cara 1*/ glColor3fv(colors[0]); glPushMatrix(); glTranslatef(0, 0, 1.); cuadrado(); glPopMatrix(); /*cara 2*/ glColor3fv(colors[1]); glPushMatrix(); glRotatef(90., 0., 1., 0); glTranslatef(0, 0, 1.); cuadrado(); glPopMatrix(); /*cara 3*/ glColor3fv(colors[2]); glPushMatrix(); glRotatef(180., 0., 1., 0); glTranslatef(0, 0, 1.); cuadrado(); glPopMatrix(); /*cara 4*/ glColor3fv(colors[3]); glPushMatrix(); glRotatef(270., 0., 1., 0); glTranslatef(0, 0, 1.); cuadrado(); glPopMatrix(); /*cara 5*/ glColor3fv(colors[4]); glPushMatrix(); glRotatef(90., 1., 0., 0); glTranslatef(0, 0, 1.); cuadrado(); glPopMatrix(); /*cara 6*/ glColor3fv(colors[5]); glPushMatrix(); glRotatef(-90., 1., 0., 0); glTranslatef(0, 0, 1.); cuadrado(); glPopMatrix(); } void SombradeMiMundo(GLfloat datosdeLuz[], GLfloat datosdePlano[]) { glColor4f(0.33, 0.33, 0.33, ALFA); //glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); glPushMatrix(); gltMakeShadowMatrix(datosdePlano, datosdeLuz, shadowMat); glMultMatrixf(shadowMat); uncolored_cube(); // Objetos_de_MiMundo(); glPopMatrix(); } /////////////////////////////////////////////////////////// void SetupRC() { // Black background glClearColor(0.0f, 0.0f, 0.0f, 1.0f); // Set drawing color to green glColor3f(0.0f, 1.0f, 0.0f); // Set color shading model to flat glShadeModel(shademode); // Clockwise-wound polygons are front facing; this is reversed // because we are using triangle fans glFrontFace(GL_CW); //CW= clockwise; CCW= counter clockwise } // Called to draw scene void piso() { glColor4f(0.66, 0.66, 0.66, ALFA); glPushMatrix(); glTranslatef(0, /*-3.5*/ /*vPizo[3]?*/ -vPizo[3], 0); glRotatef(-90., 1., 0, 0); glScalef(5., 5, 5.); cuadrado(); glDisable(GL_DEPTH_TEST); lineas(); if (bDepth) glEnable(GL_DEPTH_TEST); glPopMatrix(); } void luz() { glColor3f(1., 1., 0.); glPushMatrix(); glTranslatef(vLuz[0], vLuz[1], vLuz[2]); glutSolidSphere(.1, 20., 20.); glPopMatrix(); } void RenderScene(void) { // Reset coordinate system glLoadIdentity(); gluLookAt(ex, ey, ez, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); GLfloat x, y, angle; // Storage for coordinates and angles int iPivot = 1; // Used to flag alternating colors // Clear the window and the depth buffer glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Turn culling on if flag is set if (bCull) glEnable(GL_CULL_FACE); else glDisable(GL_CULL_FACE); // Enable depth testing if flag is set if (bDepth) glEnable(GL_DEPTH_TEST); else glDisable(GL_DEPTH_TEST); // Draw the back side as a wireframe only, if flag is set if (bOutline)glPolygonMode(GL_BACK, GL_LINE); else glPolygonMode(GL_BACK, GL_FILL); // Save matrix state and do the rotation glPushMatrix(); glRotatef(xRot, 1.0f, 0.0f, 0.0f); glRotatef(yRot, 0.0f, 1.0f, 0.0f); glScalef(25., 25, 25.); /* dibujar mundo reflejado 1. invertir orientación: glFrontFace(GL_CCW); 2. aplicar la transformacion reflejo dlTranslatef(0, -vPizo[3] (AlturqaPiso), 0); glScalef(1, -1, 1); dlTranslatef(0, vPizo[3] (AlturqaPiso), 0); 3. dibujar mundo (colorcube) 4. regresar a la orientacion original: glFrontFace(GL_CW); */ /*reflejo*/ glFrontFace(GL_CCW); glPushMatrix(); glTranslatef(0, -vPizo[3], 0); glScalef(1, -1, 1); glTranslatef(0, vPizo[3], 0); luz(); colorcube(); glPopMatrix(); glFrontFace(GL_CW); glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glDisable(GL_DEPTH_TEST); piso(); glDisable(GL_BLEND); colorcube(); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glEnable(GL_BLEND); glDisable(GL_DEPTH_TEST); SombradeMiMundo(vLuz, vPizo); glDisable(GL_BLEND); if (bDepth) glEnable(GL_DEPTH_TEST); luz(); // Restore transformations glPopMatrix(); // Flush drawing commands glFlush();// glutSwapBuffers(); } // Called by GLUT library when the window has changed size void ChangeSize(GLsizei w, GLsizei h) { // Set Viewport to window dimensions glViewport(0, 0, (GLsizei)w, (GLsizei)h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); //glOrtho (-100.0, 100.0, -100, 100, -270.0, 270.0); //glFrustum (-1.0, 1.0, -1.0, 1.0, 1.5, 20.0); gluPerspective(60.0, 1.0, 1.5, 1500.0); glMatrixMode(GL_MODELVIEW); } void SpecialKeys(int key, int x, int y) { GLfloat dx, dz; if (key == GLUT_KEY_UP) {//increase distance from camera to origin ex *= (1.0f + deltaR); ey *= (1.0f + deltaR); ez *= (1.0f + deltaR); } if (key == GLUT_KEY_DOWN) {//reduce distance from camera to origin (close up) ex *= (1.0f - deltaR); ey *= (1.0f - deltaR); ez *= (1.0f - deltaR); } if (key == GLUT_KEY_LEFT) //Rotate camera around origin in Oxz plane { dx = -ez; dz = ex; GLfloat s = sqrtf(ex * ex + ey * ey + ez * ez); ex += delta * dx; ez += delta * dz; GLfloat s1 = sqrtf(ex * ex + ey * ey + ez * ez) / s; ex /= s1; ey /= s1; ey /= s1; } if (key == GLUT_KEY_RIGHT) //Rotate camera around origin in Oxz plane { dx = -ez; dz = ex; GLfloat s = sqrtf(ex * ex + ey * ey + ez * ez); ex -= delta * dx; ez -= delta * dz; GLfloat s1 = sqrtf(ex * ex + ey * ey + ez * ez) / s; ex /= s1; ey /= s1; ey /= s1; } if (key == GLUT_KEY_F1) bCull = !bCull; if (key == GLUT_KEY_F2)bDepth = !bDepth; if (key == GLUT_KEY_F3)bOutline = !bOutline; if (key == GLUT_KEY_F4) { if (shademode == GL_FLAT) { shademode = GL_SMOOTH; } else { if (shademode == GL_SMOOTH) { shademode = GL_FLAT; } }; glShadeModel(shademode); } if (key == GLUT_KEY_F11) {//subir luz } if (key == GLUT_KEY_F12) {//bajar luz } if (key == GLUT_KEY_F11) { vLuz[1] += 0.25; } if (key == GLUT_KEY_F12) { vLuz[1] -= 0.25; } // Refresh the Window glutPostRedisplay(); } /////////////////////////////////////////////////////////// int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode(/*GLUT_DOUBLE*/GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(200, 200); glutInitWindowPosition(100, 100); glutCreateWindow(argv[0]); glutDisplayFunc(RenderScene); glutReshapeFunc(ChangeSize); glutSpecialFunc(SpecialKeys); SetupRC(); glutMainLoop(); return 0; } //#include "stdafx.h" // //GLfloat colors[][3] = { { 0.33,0.33,0.33 },{ 1.0,0.0,0.0 }, //{ 1.0,1.0,0.0 },{ 0.0,1.0,0.0 },{ 0.0,0.0,1.0 }, //{ 1.0,0.0,1.0 },{ 1.0,1.0,1.0 },{ 0.0,1.0,1.0 } }, // //shadowMat[16], //vLuz[4] = {2., 3.5, 0, 1.}, //vPizo[4] = { 0.0f, 1.0f /*-1?*/, 0.0f, /*-*/3.5 /* 3.5 ?*/}; // // //#define GL_PI 3.1415f // //GLfloat xRot = 0.45f; //GLfloat yRot = 0.35f; //GLboolean bCull = glIsEnabled(GL_CULL_FACE); //GLboolean bDepth = glIsEnabled(GL_DEPTH_TEST); //GLboolean bOutline = (GLboolean)true; // //GLenum shademode = GL_FLAT; // //GLfloat ex = 0.0f; //GLfloat ey = 50.0f; //GLfloat ez = -300.0f; //GLfloat delta = 0.01f; //GLfloat deltaR = 0.01f; //GLfloat ALFA = 0.75; // //void gltMakeShadowMatrix(GLfloat vPlaneEquation[], GLfloat vLightPos[], GLfloat destMat[]) //{ // GLfloat dot; // // // Dot product of plane and light position // dot = vPlaneEquation[0] * vLightPos[0] + vPlaneEquation[1] * vLightPos[1] + // vPlaneEquation[2] * vLightPos[2] + vPlaneEquation[3] * vLightPos[3]; // // // Now do the projection // // First column // destMat[0] = dot - vLightPos[0] * vPlaneEquation[0]; // destMat[4] = 0.0f - vLightPos[0] * vPlaneEquation[1]; // destMat[8] = 0.0f - vLightPos[0] * vPlaneEquation[2]; // destMat[12] = 0.0f - vLightPos[0] * vPlaneEquation[3]; // // // Second column // destMat[1] = 0.0f - vLightPos[1] * vPlaneEquation[0]; // destMat[5] = dot - vLightPos[1] * vPlaneEquation[1]; // destMat[9] = 0.0f - vLightPos[1] * vPlaneEquation[2]; // destMat[13] = 0.0f - vLightPos[1] * vPlaneEquation[3]; // // // Third Column // destMat[2] = 0.0f - vLightPos[2] * vPlaneEquation[0]; // destMat[6] = 0.0f - vLightPos[2] * vPlaneEquation[1]; // destMat[10] = dot - vLightPos[2] * vPlaneEquation[2]; // destMat[14] = 0.0f - vLightPos[2] * vPlaneEquation[3]; // // // Fourth Column // destMat[3] = 0.0f - vLightPos[3] * vPlaneEquation[0]; // destMat[7] = 0.0f - vLightPos[3] * vPlaneEquation[1]; // destMat[11] = 0.0f - vLightPos[3] * vPlaneEquation[2]; // destMat[15] = dot - vLightPos[3] * vPlaneEquation[3]; //} // //void lineas() { // glColor3f(0.0, 0., 0.); // glBegin(GL_LINES); // for (int i = 0; i < 10; i++) // { // glVertex2f(-1. + i*2. / 9., 1.); // glVertex2f(-1. + i*2. / 9., -1.); // // glVertex2f(1, -1. + i*2. / 9.); // glVertex2f(-1., -1. + i*2. / 9.); // } // glEnd(); //} // // //void cuadrado() { // glBegin(GL_POLYGON); // glVertex2f(1., 1.); // glVertex2f(1., -1.); // glVertex2f(-1., -1.); // glVertex2f(-1., 1.); // glEnd(); //} // // //void uncolored_cube(void) //{ /* map vertices to faces */ // /*cara 1*/ // glPushMatrix(); // glTranslatef(0, 0, 1.); // cuadrado(); // glPopMatrix(); // // /*cara 2*/ // glPushMatrix(); // glRotatef(90., 0., 1., 0); // glTranslatef(0, 0, 1.); // cuadrado(); // glPopMatrix(); // // /*cara 3*/ // glPushMatrix(); // glRotatef(180., 0., 1., 0); // glTranslatef(0, 0, 1.); // cuadrado(); // glPopMatrix(); // // /*cara 4*/ // glPushMatrix(); // glRotatef(270., 0., 1., 0); // glTranslatef(0, 0, 1.); // cuadrado(); // glPopMatrix(); // // /*cara 5*/ // glPushMatrix(); // glRotatef(90., 1., 0., 0); // glTranslatef(0, 0, 1.); // cuadrado(); // glPopMatrix(); // // /*cara 6*/ // glPushMatrix(); // glRotatef(-90., 1., 0., 0); // glTranslatef(0, 0, 1.); // cuadrado(); // glPopMatrix(); //} // //void colorcube(void) //{ /* map vertices to faces */ // /*cara 1*/ // glColor3fv(colors[0]); // glPushMatrix(); // glTranslatef(0, 0, 1.); // cuadrado(); // glPopMatrix(); // // /*cara 2*/ // glColor3fv(colors[1]); // glPushMatrix(); // glRotatef(90., 0., 1., 0); // glTranslatef(0, 0, 1.); // cuadrado(); // glPopMatrix(); // // /*cara 3*/ // glColor3fv(colors[2]); // glPushMatrix(); // glRotatef(180., 0., 1., 0); // glTranslatef(0, 0, 1.); // cuadrado(); // glPopMatrix(); // // /*cara 4*/ // glColor3fv(colors[3]); // glPushMatrix(); // glRotatef(270., 0., 1., 0); // glTranslatef(0, 0, 1.); // cuadrado(); // glPopMatrix(); // // /*cara 5*/ // glColor3fv(colors[4]); // glPushMatrix(); // glRotatef(90., 1., 0., 0); // glTranslatef(0, 0, 1.); // cuadrado(); // glPopMatrix(); // // /*cara 6*/ // glColor3fv(colors[5]); // glPushMatrix(); // glRotatef(-90., 1., 0., 0); // glTranslatef(0, 0, 1.); // cuadrado(); // glPopMatrix(); //} // // //void SombradeMiMundo(GLfloat datosdeLuz[], GLfloat datosdePlano[]) { // glColor4f(0.33, 0.33, 0.33, ALFA); // //glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); // glPushMatrix(); // gltMakeShadowMatrix(datosdePlano, datosdeLuz, shadowMat); // glMultMatrixf(shadowMat); // uncolored_cube(); // Objetos_de_MiMundo(); // glPopMatrix(); //} // // ///////////////////////////////////////////////////////////// // // //void SetupRC() //{ // Black background // glClearColor(0.0f, 0.0f, 0.0f, 1.0f); // // // Set drawing color to green // glColor3f(0.0f, 1.0f, 0.0f); // // // Set color shading model to flat // glShadeModel(shademode); // // // Clockwise-wound polygons are front facing; this is reversed // // because we are using triangle fans // glFrontFace(GL_CW); //CW= clockwise; CCW= counter clockwise //} // // //// Called to draw scene //void piso() { // glColor3f(.66, .66, .66); // glPushMatrix(); // glTranslatef(0, /*-3.5*/ /*vPizo[3]?*/ -vPizo[3] , 0); // glRotatef(-90., 1., 0, 0); // glScalef(5., 5, 5.); // cuadrado(); // glDisable(GL_DEPTH_TEST); // lineas(); // if (bDepth) glEnable(GL_DEPTH_TEST); // glPopMatrix(); //} // // //void luz() { // glColor3f(1., 1., 0.); // glPushMatrix(); // glTranslatef(vLuz[0], vLuz[1], vLuz[2]); // glutSolidSphere(.1, 20., 20.); // glPopMatrix(); //} // // //void RenderScene(void) //{ // // Reset coordinate system // glLoadIdentity(); // gluLookAt(ex, ey, ez, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); // // GLfloat x, y, angle; // Storage for coordinates and angles // int iPivot = 1; // Used to flag alternating colors // // Clear the window and the depth buffer // glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // // // // Turn culling on if flag is set // if (bCull) glEnable(GL_CULL_FACE); // else glDisable(GL_CULL_FACE); // // // // Enable depth testing if flag is set // if (bDepth) glEnable(GL_DEPTH_TEST); // else glDisable(GL_DEPTH_TEST); // // // // Draw the back side as a wireframe only, if flag is set // if (bOutline)glPolygonMode(GL_BACK, GL_LINE); // else glPolygonMode(GL_BACK, GL_FILL); // // // // Save matrix state and do the rotation // glPushMatrix(); // // // glRotatef(xRot, 1.0f, 0.0f, 0.0f); // glRotatef(yRot, 0.0f, 1.0f, 0.0f); // glScalef(25., 25, 25.); // /* // dibujar mundo reflejado // 1. invertir orientación: glFrontFace(GL_CCW); // 2. aplicar la transformacion reflejo // dlTranslatef(0, -vPizo[3] (AlturqaPiso), 0); // glScalef(1, -1, 1); // dlTranslatef(0, vPizo[3] (AlturqaPiso), 0); // 3. dibujar mundo (colorcube) // 4. regresar a la orientacion original: glFrontFace(GL_CW); // */ // // /*reflejo*/ // glFrontFace(GL_CCW); // glPushMatrix(); // glTranslatef(0, -vPizo[3], 0); // glScalef(1, -1, 1); // glTranslatef(0, vPizo[3], 0); // luz(); // colorcube(); // glPopMatrix(); // glFrontFace(GL_CW); // // piso(); // colorcube(); // glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // glEnable(GL_BLEND); // glDisable(GL_DEPTH_TEST); // SombradeMiMundo(vLuz, vPizo); // glDisable(GL_BLEND); // if (bDepth) glEnable(GL_DEPTH_TEST); // luz(); // // // Restore transformations // glPopMatrix(); // // // // Flush drawing commands // glFlush();// glutSwapBuffers(); //} // // //// Called by GLUT library when the window has changed size // // //void ChangeSize(GLsizei w, GLsizei h) //{ // Set Viewport to window dimensions // glViewport(0, 0, (GLsizei)w, (GLsizei)h); // glMatrixMode(GL_PROJECTION); // glLoadIdentity(); // //glOrtho (-100.0, 100.0, -100, 100, -270.0, 270.0); // //glFrustum (-1.0, 1.0, -1.0, 1.0, 1.5, 20.0); // gluPerspective(60.0, 1.0, 1.5, 1500.0); // glMatrixMode(GL_MODELVIEW); //} // // // // // // //void SpecialKeys(int key, int x, int y) //{ // GLfloat dx, dz; // if (key == GLUT_KEY_UP) // {//increase distance from camera to origin // ex *= (1.0f + deltaR); ey *= (1.0f + deltaR); ez *= (1.0f + deltaR); // } // if (key == GLUT_KEY_DOWN) // {//reduce distance from camera to origin (close up) // ex *= (1.0f - deltaR); ey *= (1.0f - deltaR); ez *= (1.0f - deltaR); // } // if (key == GLUT_KEY_LEFT) // //Rotate camera around origin in Oxz plane // { // dx = -ez; dz = ex; // GLfloat s = sqrtf(ex*ex + ey*ey + ez*ez); // ex += delta*dx; ez += delta*dz; // GLfloat s1 = sqrtf(ex*ex + ey*ey + ez*ez) / s; // ex /= s1; ey /= s1; ey /= s1; // } // // // if (key == GLUT_KEY_RIGHT) // //Rotate camera around origin in Oxz plane // { // dx = -ez; dz = ex; // GLfloat s = sqrtf(ex*ex + ey*ey + ez*ez); // ex -= delta*dx; ez -= delta*dz; // GLfloat s1 = sqrtf(ex*ex + ey*ey + ez*ez) / s; // ex /= s1; ey /= s1; ey /= s1; // } // // if (key == GLUT_KEY_F1) bCull = !bCull; // if (key == GLUT_KEY_F2)bDepth = !bDepth; // if (key == GLUT_KEY_F3)bOutline = !bOutline; // if (key == GLUT_KEY_F4) // { // if (shademode == GL_FLAT) { shademode = GL_SMOOTH; } // else { if (shademode == GL_SMOOTH) { shademode = GL_FLAT; } }; // glShadeModel(shademode); // } // // if (key == GLUT_KEY_F11) // {//subir luz // } // // if (key == GLUT_KEY_F12) // {//bajar luz // } // if (key == GLUT_KEY_F11) { // vLuz[1] += 0.25; // } // if (key == GLUT_KEY_F12) { // vLuz[1] -= 0.25; // } // // Refresh the Window // glutPostRedisplay(); //} // ///////////////////////////////////////////////////////////// // // //int main(int argc, char** argv) //{ // glutInit(&argc, argv); // glutInitDisplayMode(/*GLUT_DOUBLE*/GLUT_SINGLE | GLUT_RGB); // glutInitWindowSize(200, 200); // glutInitWindowPosition(100, 100); // glutCreateWindow(argv[0]); // glutDisplayFunc(RenderScene); // glutReshapeFunc(ChangeSize); // glutSpecialFunc(SpecialKeys); // // // SetupRC(); // glutMainLoop(); // return 0; //}