Práctico 2- Ejercicio 1

Práctico 2- Ejercicio 1

de Usuario eliminado -
Número de respuestas: 5
¿Qué tal? ¿Qué significa la parte de la letra que dice que los objetos deben rotar según el eje Y relativo al punto (0,0,-6) ? ¿Significa que se debe hacer la rotación glRotatef(angulo,0,0,-6) en alguna parte del código?
Saludos !

En respuesta a Usuario eliminado

Re: Práctico 2- Ejercicio 1

de Mauricio Eguia -
glRotate(angulo,0,0,-6) hace una rotación según el vector (0,0,-6) por lo que seria una rotación según el eje Z centrada en el origen.
En el practico tenés que hacer una rotación utilizando un vector que tenga la misma dirección que el eje Y, al mismo tiempo que el centro de la rotación sea el punto (0,0,-6).
El el ejecutable que se entrega junto con la letra podés ver el resultado esperado.
La referencia teórica es la transparencia 25 de transformaciones geométricas.

Saludos
En respuesta a Mauricio Eguia

Re: Práctico 2- Ejercicio 1

de Usuario eliminado -
Perfecto, se entendió.
Ahora tengo otra consulta. Es cuando están rotando el triangulo y el cuadrilatero.
En mi ejecutable, cuando el cuadrilatero se "aproxima" a la pantalla y queda alineado con el triángulo, el cuadrilátero no lo deja ver, ahora cuando sucede al revés (el triángulo se "aproxima" a la pantalla y ambos quedan alineados), se sigue viendo el caudrilatero. He probado darle a los vértices del cuadrilátero coordenadas mas lejanas en el eje z pero sigue sucediendo lo mismo. ¿Me estará faltando actualizar algo?

En respuesta a Usuario eliminado

Re: Práctico 2- Ejercicio 1

de Mauricio Eguia -
Supongo que te referís al z-buffer.
Lo tenés que hacer es habilitar la bandera GL_DEPTH_TEST, si esta deshabilitada (estado por defecto) la geometría que se dibuja por último se ve por encima del resto por más que esté más lejos.
Al dibujar la nueva geometría se va actualizando el buffer de profundidad. Tal como pasa con el buffer de color, hay que limpiarlo al inicio del main loop.

Saludos
En respuesta a Usuario eliminado

Re: Práctico 2- Ejercicio 1

de Rossana Guerra Celano -
Creo que está faltando inicializar algo de esto antes del loop:
glClearColor(0.0,0.0,0.0,0);
glDepthFunc(GL_LEQUAL);
glEnable(GL_DEPTH_TEST); // Si no habilitás esto, lo anterior no funciona.

GL_LEQUAL indica que si dibujás figuras superpuestas, se mostrara la más cercana según Z.
Si no habilitás el GL_DEPTH_TEST, las figuras de despliegan en el orden que las renderizás. Caso contrario, sólo los pixels más próximos a los ya renderizados son almacenados en el frame buffer.