Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





aceleración por hardware

Iniciado por Hechelion, 30 de Abril de 2012, 07:31:56 AM

« anterior - próximo »

Hechelion

Estaba revisando otras librerías y de pronto me surgió esta gran duda, por lo que sé la carga de texturas es sobre la GPU, por lo cual asumo que las funciones de dibujo se harán directo sobre la GPU. ¿Esto significa que la librería hace uso de aceleración por hardware o todo se hace a nivel de CPU?.

[EX3]

Como bien indica la propia lista de caracteristicas en su web:
Citar- Aceleración por hardware vía Direct Graphics (Direct3D8)

Todo esta acelerado, inclusive el audio (DirectSound y DirectShow) y reproduccion de video (DirectShow que tira de DirectGraphics), de lo contrario dx_lib32 iria fatal no, lo siguiente tampoco, iria penosamente mal de rendimiento en graficos al menos :)

En verdad hay pocas operaciones que se hagan por software (el sistema de dibujo por perspetivas de los sprites, el sistema de ZBuffer del render grafico y algunas funciones más).

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

Hechelion

Si seré bestia, ni cuenta me había dado que estaba escrito en las características.

gracias por la respuesta.

Hechelion

Aprovechando este espacio para no crear un hilo nuevo y ya que está algo relacionado con lo que quiero preguntar.

A groso modo, ¿cómo está implementado el zbuffer en la librería?. Me trance en una "discusión" en otro foro sobre el uso de zbuffer en los tilemap y me ha dicho lo siguiente.


Primero, que si uso zbuffer, no tengo alpha blending.
Segundo:
"El problema es que el zbuffer asume que todo es opaco... Si el techo se dibuja primero, el personaje no se va a dibujar por abajo del techo porque según el zbuffer el personaje queda tapado. Si el techo se dibuja al final, el personaje es visible porque cuando se lo dibujó no lo tapaba nada."
tercero: Que si el zbuffer no es por GPU, entonces el rendimiento se muere.

Yo sé que lo primero (alpha blending) y lo segundo (orden de dibujo) son falsos con dxlib32 y eso lo tengo comprobado de forma empírica , pero me gustaría saber tu opinión o saber si el zbuffer de dxlib32 es el zbuffer de directX o si es una implementación tuya mediante software.

Ojo, no estoy preguntando los detalles, solo una visión general, para saber si el zbuffer por ejemplo, es tuyo por software o si es por hardware, cosas así, sin tener que leerme todo sobre directX, ya que como decía antes, es solo por un tema de conocimiento general, no por que esté pensando implementarlo a mano por mi cuenta.

[EX3]

El llamado "zbuffer" de dx_lib32 no es mas que una lista de arrays de operaciones de dibujo. No son mas que listas de llamadas que se procesan una detras de otra, desde el indice 8 hasta el -8 (los 16 niveles de Z + el nivel por defecto, el 0).

El ZBuffer real de DirectX y supongo que igual el de OpenGL, como te dijeron, no respeta el alpha. Esto fue lo primero que me hizo descartarlo para usarlo en dx_lib32 cuando realizaba las primeras pruebas.

Sobre el tema de rendimiento, el proceso que ejecuta las operaciones de cada lista ya implementa comprobaciones de estados de textura y demas configuraciones para evitar llamadas recursivas e innecesarias, por ejemplo, evitar establecer la misma textura durante varias operaciones de dibujo consecutivas que usen la misma textura.

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

Hechelion

Agradecido con la respuesta  Ex3.






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.