Pregunta

Actualmente estoy implementando mi propio renderizador utilizando el algoritmo Z-Buffer. Una vez que he realizado los cálculos necesarios (léase: mi buffer Z está lleno de valores correctos) uso SDL para colorear en los píxeles necesarios. Estoy usando una HWSurface para esto.

Mi pregunta es, ¿cómo puedo hacer esto lo más rápido posible? Con esto me refiero al dibujo en sí, puedo hacer optimizaciones en mi estructura, mi algoritmo, lo haré más adelante, pero quiero asegurarme de que el dibujo en sí sea lo más rápido posible.

Debido a que tengo mi propia implementación de un ZBuffer (y habrá otros algoritmos más adelante) no puedo usar OpenGL, entonces ¿hay alguna alternativa?

Ahora solo estoy repasando todos mis puntos en el Z-Buffer y dibujo todos los píxeles que tienen que ser dibujados, uno por uno (y debido a que es un bifurcador Z, tengo que hacer esto, ¿verdad?) Y llamo a A Método DrawPixel. Con respecto a SDL, bloqueo mi superficie antes de pasar por encima del buffer Z, dibujar todos los píxeles y desbloquearlo después, esto no puede ir más rápido hasta donde yo sé.

¿Alguna sugerencia?

¿Fue útil?

Solución

Las implementaciones de software son increíblemente lentas, es decir, Warp hace que Crysis en un I7 Hexacore en una décima parte del FPS que hace un 8800GT. No encontrará ningún rendimiento competitivo en un buffer Z implementado con software.

Un z-buffer no es un algoritmo particularmente complejo y es bastante poco probable que encuentre una implementación que sea más eficiente que otra. El fortaleza Z no es algo que haces durante la rasterización: es algo que haces durante la representación de píxeles. Si la profundidad del nuevo píxel está más lejos que el valor escrito actualmente, no rinde el píxel más, por ejemplo, no calcule su color, etc. No dibuja el buffer Z ni nada de eso. No es como un tipo en el que podrías elegir el tipo más eficiente para tu algoritmo: es más como una multiplicación matricial, son prácticamente iguales.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top