Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Sobre La Listas Precompiladas

Iniciado por AGONY, 13 de Mayo de 2004, 10:32:45 AM

« anterior - próximo »

AGONY

 Que una esfera con 50000 vertices por ejemplo se veria bastante lenta en un ordenador normal pero con listas de visualizacion iria mucho mas rapido , alguien puede explicarme el porque, si es pq se precompila eso que quiere decir exactamente.

AGONY

 No estoy muy seguro pero creo que puedo contestarme yo mismo , segun lo que he visto es que cuando haces una lista ya compilada lo que hace es meter esos datos en el propio exe por lo que tarda menos en leer bueno eso creo no se si sera algo parecido a lo que hace una libreria estatica

sés

 5000 vértices serían algo así como 5000 glVertex3f(...) (más las normales, las texturas...)
Son 5000 sentencias, como mínimo, que no tienes que repetir. Optimizaciones internas aparte.
Soy indeciso... ¿o no?

AgeR

 No estoy muy ducho en el tema, pero allá voy. Que alguien me corrija si me equivoco  ;) .

Según tengo entendido, usando display lists lo que haces es tener en memoria de la tarjeta la geometría, con lo que no has de hacer las llamadas a glVertex3f y similares, que consumen tanto tiempo de cpu como de gpu.

Que yo sepa, no tiene nada que ver con meter los datos en el exe, sino en la memoria de la tarjeta en tiempo de ejecución (por ejemplo en la inicialización de tus modelos).


Bueno, y ahora lanzo una pregunta, ya que yo tampoco tengo claras algunas cosas... por ejemplo, qué diferencias hay entre las display lists y los Vertex Arrays y los CompiledVAs?

Venga, espero no haber liado más las cosas  :(

Saludos!

DraKKaR

 La principal diferencia entre Display  List y Vertex Array es que con display list todo lo que le metes dentro se guarda en la memoria de la tarjeta de forma que cada vez que quieras acceder a ella, no tienes que volver a enviar los datos a la tarjeta. Por contra, con Vertex Array cada vez que quieres pintar algo tienes lo reenviar a la tarjeta. Una ventaja que tiene esto es que con vertex arrays puedes hacer objetos dinamicos (que deformen su malla poligonal) y con display lists no.

Ahora bien, imagina que quiero hacer lightmapping en una tarjeta que no soporta multitexturas. Tendria que enviar 2 veces la misma geometria con vertex array para hacer el blend con la textura base. Pues los compiled vertex arrays valen para eso: hacen una especie de lock al vertex array para que cuando vuelvas a pintarlo no se tenga que reenviar la geometria ya que ya está en la tjta.

De todas formas, cuando yo he intentado usar CVA no he notado mejora alguna. Puede que sea por falta de optimización en el driver, ya que parece ser una extension que no se usa mucho.

AgeR

 Ajá. Hmmm entonces suponiendo que tratemos con con mallas estáticas, sería más eficiente una display list que un VA, no? Al menos en teoría debería ser así, ya que no has de enviar vértices a la tarjeta.

Saludos!

AGONY

 Entonces(no se si voy a decir una tonteria)se podria tener un modelo que tenga varias mallas una por cada "lejania".Como si usaramos mipmapping pero con mallas. Esto mejoraria en algo.

AgeR

 No sé si voy a decir yo una tontería pero creo que es lo que se hace : tener varias versiones de un mismo modelo y renderizar una u otra dependiendo de la distancia a la que se encuentre de la cámara. O al menos es una forma de mandar menos polígonos a renderizar si no son necesarios.

_Grey

 Pues yo, no voy a decir ninguna tonteria.

Puedes tener varias mallas para un mismo modelo y utilizar una u otra segun te combenga, pero la comparacion con el mipmaping, es algo desafortunada, por que seras TU quien decida que malla renderizar.

DraKKaR

 
CitarAjá. Hmmm entonces suponiendo que tratemos con con mallas estáticas, sería más eficiente una display list que un VA, no? Al menos en teoría debería ser así, ya que no has de enviar vértices a la tarjeta.

Mmm.. sí. De hecho en el laboratorio de gráficos de mi universidad habia un chico haciendo una investigación sobre eso. El resultado indicaba que usar display lists es mucho más óptimo que usar vertex arrays, y esta diferencia se acusaba ante mallas (siempre estáticas, claro) enormes.

Existe , eso sí, una manera de poder mandar una sola vez a la tjta un array de vértices: los Vertex Array Range de nvidia o la versión más estandarizada: los Buffer Objects, de los que se ha hablado en alguna ocasión en este foro, por lo que no me detendré a describirlos.

Saludos.

Y força al canut!

Mars Attacks

Cita de: "AgeR"No sé si voy a decir yo una tontería pero creo que es lo que se hace : tener varias versiones de un mismo modelo y renderizar una u otra dependiendo de la distancia a la que se encuentre de la cámara. O al menos es una forma de mandar menos polígonos a renderizar si no son necesarios.
Es la técnica de optimización conocida como LOD (Level Of Detail). Recuerdo que aquí en la UJI el profesor Óscar Belmonte (si no me equivoco) dio una charla sobre un método para hacer LOD contínuo (es decir, en lugar de tener distintas mallas discretas, modificar la malla dinámicamente dependiendo de la distancia) sin perjudicar demasiado el frame-rate.
Esto serviría, por ejemplo, para evitar el efecto... cómo se llamaba el efecto... es igual, los cambios bruscos en el modelo que se producen al pasar de un LOD a otro.
Saludetes.

AGONY

 Podrias poner el link del profesor este me gustaria ver mas sobre el tema parece interesante

Douch

 Hum... puede que éste artículo de Dave Perry (Shiny Entertainment) que presentó en el Game Developer's Conference de 1998 os interese. En él explica como funciona el motor gráfico usado en Messiah, no de forma técnica, pero lo suficiente para que os hagais una idea. Muy interesante, por cierto.

Saludos.

Douch

DraKKaR

 Un gran engine este el del Messiah, con una gran aportación de nuevas tecnologías y rebosante de inventiva. Es una lástima que los tiros no fueran por incrementar realmente el número de polígonos de los modelos, sino por el tema de los shaders, bump mapping, es decir, de simular la forma de un modelo, en vez de crearla de verdad.
De todas formas tiene algo que me encanta este engine: la idea de que el juego está exprimiendo hasta la última gota de potencia de tu ordenador.

¿Porque nos e han hecho más juegos cone ste engine?


Mars Attacks

 Pues no veo subida en ninguna parte la presentación. La página web departamental del profesor es http://www3.uji.es/~belfern/
Si te interesa, contacta con él y le preguntas :)






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.