Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





[OpenGL] [glOrtho y gluPerspective]

Iniciado por deadLock++, 24 de Noviembre de 2002, 07:05:04 PM

« anterior - próximo »

deadLock++

                                Tengo que renderizar una escena sencilla donde existen algunos objetos 3d que deseo se dibujen en perspectiva para ello al momento de inicializar OpenGL seteo:

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective( 60.0, 640/480, 1.0, 1024.0);

Luego hay un tablero de puntaje que quiero se dibuje en una relación 1 unidad = 1 pixel. De modo que la textura por la cual está formada se vea en pantalla en una relación de escala 1 a 1.

Para ello me es conveniente utilizar el glOrtho en lugar del Perspective.

Ej:
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, 640, 0, 480, 1.0, 1024.0);


Mi pregunta es ¿Es muy costoso a nivel procesamiento realizar un cambio de glOrtho a gluPerspective cada vez que tenga que dibujar cada tipo de objeto?

¿Podría utilizar solo el gluPerspective y realizar un glTranslatef para colocar la imagen pseudo-2d justo al frente de la escena? (En este último cálculo tendría que conocer que valor de Z trasladar para que una unidad dibujada equivalga a 1 pixel?

Desde ya, muchas gracias por leer el post.

deadLock++                                

_Grey

                                No, no es costoso, es uin simple cambio de matriz de projeccion, como cuando cambian la matriz de mundo, pizca mas o menos, pero si tienes miles de objetos a representar en ortho y mieles a representar en perspectiva entonces haz todos los de un tipo y luego todos los del otro tipo.... cuando jugamos con la matriz de mundo igual. Es decir igual que se evitan cambios innecesarios en la matriz de mundo(glTraslate() y demas) se evitan en la matriz de proyeccion, pero no son mas costosos los unos que los otros, bienen a ser lo mismo.

Saludotes.                                

Ithaqua

                                Cuidado con eso que no es tan simple como parece. No solamente es el cambio de valores en una matriz, sino que a nivel del estado de la tarjeta sí que puede suponer un parón brusco. Al igual que cambiar/obtener un renderstate no es simplemente un renderstate = valor.

Hay documentación varia por ahí con estas cuestiones y similares (p.ej los performance faqs de nvidia).                                
thaqua^Stravaganza
http://ithaqua.stravaganza.org

Mars Attacks

                                Bueno, bueno, bueno, si lo que me enseñaron en clase de gráfica no estaba mal (y ya sería una putada, habiendo pagado la matrícula =) hay una matriz que multiplicada a la Ortho te da una visión muy parecida a la Perspective. No se suele usar porque antes la perspective costaba un huevo de calcular, pero ahora pues todos sabéis cómo va el asunto. Sin embargo, para tu problema, creo que sería conveniente que echaras un vistazo sobre el tema, porque quizás pudieras resolverlo todo sencillamente multiplicando o no por una matriz antes de renderizar lo que vayas a renderizar.
No sé dónde he dejado los apuntes (hace ya dos años de esto) pero si los encuentro te escribiré esa matriz por aquí.
Un saludo.                                






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.