Hola a todos tengo un grabe problema que no se como fijar una esfera (que haga de luna ,y que no se me mueva la pantalla de ejecucion) en el siguiente programa:
#include <windows.h>
#include <conio.h>
#include <gl\gl.h>
#include <gl\glu.h>
#include <gl\glaux.h>
void myinit(void);
void drawPlane(void);
void CALLBACK dayAdd (void);
void CALLBACK daySubtract (void);
void CALLBACK yearAdd (void);
void CALLBACK yearSubtract (void);
void CALLBACK display(void);
void CALLBACK myReshape(GLsizei w, GLsizei h);
static int year = 0, day = 0;
void CALLBACK dayAdd (void)
{
day = (day + 10) % 360;
}
void CALLBACK daySubtract (void)
{
day = (day - 10) % 360;
}
void CALLBACK yearAdd (void)
{
year = (year + 5) % 360;
}
void CALLBACK yearSubtract (void)
{
year = (year - 5) % 360;
}
void CALLBACK display(void)
{
glClear(GL_COLOR_BUFFER_BIT
glColor3f (1.0, 1.0, 1.0);
glPushMatrix();
/* Dibuja el sol */
glPushMatrix();
glRotatef (90.0, 1.0, 0.0, 0.0); /* rotate it upright */
glColor3f (1.0, 1.0, 0.0);
auxSolidSphere (1.0);
glPopMatrix();
/* Situa el planeta */
glRotatef ((GLfloat) year, 0.0, 1.0, 0.0);
glTranslatef (2.5, 0.0, 0.0);
glRotatef ((GLfloat) day, 0.0, 1.0, 0.0);
glRotatef (90.0, 1.0, 0.0, 0.0); /* rotate it upright */
/* Dibuja el planeta */
glColor3f (0.0, 0.0, 1.0);/
auxWireSphere (0.2);
glPopMatrix();
//situa luna//
glTranslatef (3, 0.0, 0.0);
glRotatef (0, 0.0, 1.0, 0.0);
glRotatef (90.0, 1.0, 0.0, 0.0);
/* Dibuja la luna */
glColor3f (1.0, 1.0, 1.0);
auxSolidSphere (0.1);
glPopMatrix();
glFlush();
}
void myinit (void) {
glShadeModel (GL_FLAT);
}
void CALLBACK myReshape(GLsizei w, GLsizei h)
{
h = (h == 0) ? 1 : h;
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(90.0, (GLfloat) w/(GLfloat) h, 1.0, 20.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef (0.0, 0.0, -5.0);
}
/* Programa principal.
* Abre la ventana con el tamaño inicial, una barra de titulo,
* modo de pantalla RGBA, y maneja los eventos de entrada.
*/
int main(int argc, char** argv)
{
auxInitDisplayMode (AUX_SINGLE | AUX_RGB);
auxInitPosition (0, 0, 500, 500); //tamaño de la ventana
auxInitWindow ("Composición de transformaciones de modelado
myinit ();
auxKeyFunc (AUX_LEFT, yearSubtract);
auxKeyFunc (AUX_RIGHT, yearAdd);
auxKeyFunc (AUX_UP, dayAdd);
auxKeyFunc (AUX_DOWN, daySubtract);
auxReshapeFunc (myReshape);
auxMainLoop(display);
return(0);
}