lovo15
julio 3, 2010, 02:32 AM
Hola a todos.
Bueno tengo un problemita con OpenGL.
Al compilar con: g++ Pro1.cpp -o Pro1 -IGL -lglut
Me regresa: /tmp/ccGehhlO.o: In function `display()':
Pro1.cpp:(.text+0xb6): undefined reference to `gluLookAt'
collect2: ld returned 1 exit status
Cuando comento esa línea (gluLookAt) corre pero muestra solamente una pantalla azul.
Según tengo entendido el 'gluLookAt' es para la posición de la cámara así que supongo es muuy importante para la visualización.
He buscado un rato por los foros y no he dado con la respuesta, otros donde parecen tener la respuesta pues son chinos y eso del mandarin como que no se me da muy bien que digamos.
Tendrán alguna idea o sugerencia??
Pd. El código lo probé en Visual Studio y sí funcoina.
#include <GL/glut.h> // Librería de OpenGL
#include <stdlib.h> //Libreria estandar de ANSI C
#include <stdio.h>
GLfloat deltaZ;
GLfloat deltaY;
void init(void) // Inicialización de la escena
{
glClearColor (0.0, 0.5, 0.8, 0.0); //Color de la escena;ROJO,VERDE,AZUL
glShadeModel (GL_FLAT); //Tipo de Sombreado a utilizar
deltaZ=0.0;
}
void display(void) //Función de despliegue
{
glClear (GL_COLOR_BUFFER_BIT); //CLEAR
glColor3f (1.0, 0.0, 0.8); //Color de dibujado; ROJO,VERDE,AZUL
glLoadIdentity (); //Limpiar la matriz identidad
//Colocación de la cámara en la escena
gluLookAt (0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
//ES PARA QUE ROTE EL CUBO CUANDO LE DOY AL MOUSE
glPushMatrix();
glRotatef(0.0+deltaZ,0,1,0);
glutWireCube(1.0);
glPopMatrix();
//FUNCIONES DE ROTACIÖN; ESCALACIÖN; TRASLACIÖN
/*
glPushMatrix();
glRotatef(45.0,0,1,0);//rotar cubo;GRADOS, X, Y, Z
glutWireCube(1.0);
glPopMatrix();*/
/* glPushMatrix();
glscalef(0.5,0.5,0.5); //Escalar el cubo: X, Y, Z
glutWireCube(1.0);
glPopMatrix();*/
/*
glPushMatrix();
glTranslatef(0+deltaZ,0+deltaZ,0);//Traslada el cubo respecto a su escala original
glutWireCube(1.0);
glPopMatrix(); */
/*
for(float i=0;i<6;i+=0.3){
glutWireCube (i); //Aqui se dibuja un cubo de dimensiones 1.0
}*/
glFlush ();
}
void reshape (int w, int h) //Reescalamiento de la ventana
{
glViewport (0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
glFrustum (-1.0, 1.0, -1.0, 1.0, 1.5, 20.0);
glMatrixMode (GL_MODELVIEW);
}
void keyboard(unsigned char key, int x, int y)//Funciones de teclado
{
switch (key) {
case 27: //Al oprimir “escape” termimamos el programa
exit(0);
break;
case 'a':
deltaZ=deltaZ+.05;
glutPostRedisplay();
break;
case 'b':
deltaZ=deltaZ-0.5;
glutPostRedisplay();
break;
case 's':
deltaY=deltaY+0.5;
glutPostRedisplay();
break;
case 'z':
deltaY=deltaY-10;
break;
glutPostRedisplay();
}
}
void raton(int boton, int estado,int x, int y){
printf("BOTON: %i, ESTADO: %i, X: %i, Y: %i\n",boton, estado,x,y);
switch(boton){
case 0:
deltaZ = deltaZ+10;
glutPostRedisplay();
break;
case 1:
deltaZ = deltaZ-10;
glutPostRedisplay();
break;
}
}
int main(int argc, char** argv) //Función principal
{
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize (500, 500); //Tamaño de ventana
glutInitWindowPosition (100, 100); //Posición de la ventana
glutCreateWindow (argv[0]); //Creación de la vantana con glut
init (); //Inicializando escena
glutDisplayFunc(display); //Despliegue de elementos
glutReshapeFunc(reshape); //Reescalaminento de la ventana
glutKeyboardFunc(keyboard); //Invocando funciones de teclado
glutMouseFunc(raton);
glutMainLoop(); //Redibujando la escena
return 0;
}
lovo15
julio 16, 2010, 06:39 PM
Bien, al parecer tenía un pequeño problema en mi código. Fuera de eso, reinstalé los paquetes de openGl y listo.
vBulletin®, Copyright ©2000-2013, Jelsoft Enterprises Ltd.