Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: Lord Trancos en 01 de Enero de 1970, 01:00:00 AM

Título: display lists
Publicado por: Lord Trancos en 01 de Enero de 1970, 01:00:00 AM
                                Alguien puede explicarme q son las display lists de OpenGL ?

Asias.                                
Título: display lists
Publicado por: Ithaqua en 01 de Enero de 1970, 01:00:00 AM
                                Hola Lord Trancos,

Así a grandes rasgos se podría definir como un conjunto de comandos OpenGL convertidos a instrucciones de la aceleradora.
Una display list generalmente se utiliza cuando vamos a repetir gran cantidad de veces una porción crítica de código OpenGL que no va a ser alterado.
Las display lists son la forma más óptima de renderizar geometría estática, dado que se le otorga al driver una libertad muy grande para optimizar como le convenga. Cada driver generará la display list mas adecuada a la tarjeta. Una de las cosas que puede hacer por ejemplo es meter la geometría en memoria de vídeo si se utiliza mucho.

La forma de usar display lists es la siguiente:

Primero se genera un handle nuevo con glGenLists().
Cuando queramos compilar una porción de código a display list, llamamos a glNewList() pasándole el handle anterior. A continuación metemos las instrucciones (por ejemplo el render de un objeto), y cuando hayamos terminado llamamos a glEndList().
Cuando queramos ejecutar el código que hemos compilado, solamente hace falta llamar a glCallList() desde cualquier punto del programa.
Es importante luego al finalizar el programa eliminar con glDeleteLists() todas las display lists generadas.

La gran ventaja de las display lists radica en su rapidez, la desventaja en que el código que se compila no puede ser alterado, por lo que no nos servirá para dibujar geometría dinámica.
Hay también ciertas instrucciones de OpenGL que no pueden ser metidos dentro de las lists, por lo que es recomendable leer la documentación y experimentar un poco.

Espero que te haya aclarado la duda, saludos.

                               
Título: display lists
Publicado por: Lord Trancos en 01 de Enero de 1970, 01:00:00 AM
                                Claro como el agua. Mi duda ahora es saber si existe algo parecido en DirectX y que nombre tiene ese algo... :sonriendo:                                
Título: display lists
Publicado por: Loover en 01 de Enero de 1970, 01:00:00 AM
                                Pues la forma optima en Direct3D sería usando dos buffer: uno de vértices y otro de esos mismo vértices procesados. Y dibujar luego el buffer de vértices procesados.                                
Título: display lists
Publicado por: ProD en 01 de Enero de 1970, 01:00:00 AM
                                Hombre... creo que lo mejor sería crear un Vertex Buffer estático y meter todos los vertices, y luego nada más poner los renderstates necesarios y llamar a DrawPrimitive, nunca más va a volver a tocar el VB, solo llamarás a DrawPrimitive.

Un saludo.