Título: OpenGL
Publicado por: cazagavilan en 25 Abril 2012, 22:46 pm
Hola! Se supone que tengo que crear un triangulo y rotarlo a 45 grados en el eje y el problema esta en que en el curso que hago no explica bien la implementacion de glRotatef... y me da error. #include <Windows.h> #include <gl\glut.h> #include <gl\gl.h> #include <gl\GLU.h> void animacion(void); void init(void); void dibujar(void); void redimensionar(int, int); void teclado (unsigned char, int); void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z); void init(void) { glClearColor(0.0,0.0,0.0,0.0); glEnable(GL_DEPTH_TEST); glShadeModel(GL_FLAT); } void redimensionar(int ancho, int alto) { glViewport(0,0,(GLint)ancho, (GLint)alto); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(35,((float)ancho/alto), 0.1, 1000); } void dibujar(void) { glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(3,2,3,0,0,0,0,1,0); glPushMatrix(); glRotatef(45, 0, 0, 1); // Primera cara glBegin(GL_TRIANGLES); glColor3f(1.0,0.5,1.0); glVertex3f(0,1,0); glVertex3f(1,0,1); glVertex3f(-1,0,1); glEnd(); // Segunda cara glBegin(GL_POLYGON); glColor3f(1.0,1.0,0.0); glVertex3f(0,1,0); glVertex3f(-1,0,1); glVertex3f(-1,0,-1); glEnd(); // Tercera cara glBegin(GL_POLYGON); glColor3f(0.5,0.9,1.0); glVertex3f(0,1,0); glVertex3f(-1,0,-1); glVertex3f(1,0,-1); glEnd(); // Cuarta cara glBegin(GL_POLYGON); glColor3f(0.5,0.9,1.0); glVertex3f(0,1,0); glVertex3f(1,0,-1); glVertex3f(1,0,1); glEnd(); glPopMatrix(); glutSwapBuffers(); } void teclado(unsigned char key, int x, int y) { if(key==27) exit(0); } void main( int argc, char** argv) { glutInit(&argc,argv); glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB|GLUT_DEPTH); glutInitWindowSize(320,240); glutCreateWindow("Intro"); // Registrar funciones init(); glutIdleFunc(animacion); glutKeyboardFunc(teclado); glutDisplayFunc(dibujar); glutReshapeFunc(redimensionar); // Bucle de eventos principal glutMainLoop(); }
Muchas gracias.
Título: Re: OpenGL
Publicado por: cazagavilan en 26 Abril 2012, 16:47 pm
Solucionado. #include <gl\glut.h> void init(void); void dibujar(void); void redimensionar(int, int); void teclado (unsigned char, int); void init(void) { glClearColor(0.0,0.0,0.0,0.0); glEnable(GL_DEPTH_TEST); glShadeModel(GL_FLAT); } void redimensionar(int ancho, int alto) { glViewport(0,0,(GLint)ancho, (GLint)alto); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(35,((float)ancho/alto), 0.1, 1000); } void dibujar(void) { glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(3,2,3,0,0,0,0,1,0); glPushMatrix(); glRotatef(45, 0, 0, 1); // Primera cara glBegin(GL_TRIANGLES); glColor3f(1.0,0.5,1.0); glVertex3f(0,1,0); glVertex3f(1,0,1); glVertex3f(-1,0,1); glEnd(); // Segunda cara glBegin(GL_POLYGON); glColor3f(1.0,1.0,0.0); glVertex3f(0,1,0); glVertex3f(-1,0,1); glVertex3f(-1,0,-1); glEnd(); // Tercera cara glBegin(GL_POLYGON); glColor3f(0.5,0.9,1.0); glVertex3f(0,1,0); glVertex3f(-1,0,-1); glVertex3f(1,0,-1); glEnd(); // Cuarta cara glBegin(GL_POLYGON); glColor3f(0.5,0.9,1.0); glVertex3f(0,1,0); glVertex3f(1,0,-1); glVertex3f(1,0,1); glEnd(); glutSwapBuffers(); } void teclado(unsigned char key, int x, int y) { if(key==27) exit(0); } void main( int argc, char** argv) { glutInit(&argc,argv); glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB|GLUT_DEPTH); glutInitWindowSize(320,240); glutCreateWindow("Intro"); // Registrar funciones init(); glutKeyboardFunc(teclado); glutDisplayFunc(dibujar); glutReshapeFunc(redimensionar); // Bucle de eventos principal glutMainLoop(); }[code=gml]
[/code]
|