OpenGL

Iniciado por cazagavilan, 25 Abril 2012, 22:46 PM

0 Miembros y 1 Visitante están viendo este tema.

cazagavilan

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.

Código (cpp) [Seleccionar]
#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.

cazagavilan

Solucionado.

Código (cpp) [Seleccionar]
#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]