› Foros › Multiplataforma › Desarrollo
parrincrisis escribió:Aparte de la lista de cuadros sucios,¿Has mirado el ejemplo del PSPSDK de blit?
En el ejemplo recuerdo que bliteaba de diferentes formas y conseguía unas velocidades altísimas, no se como, solo lo ejecuté.
Saludos
HexDump escribió:Bueno no me paso mucho por este foro pero bueno ya que he visto esto te intentaré dar alguan alternativa.
La técnica q describes es la de dirty rectangles, la usan a cascoporro en engines basados en tiles, y suele dar un buen rendimiento a menos q tengas scroll continuado (aunque se pueden hacer buenos apaños ).
Hay una técnica algo más compleja y es la del SBUffer. La base consiste en ter un lista de segmentos de pixeles ordenados por Z (o layer si quiers si el juego es 2D). Se empieza pintando por la Z más próxima y se acaba por la ultima, y descartas todos los segmentos con pixeles q no se pintarian al estar debajo de los pixeles de layers mas cercanos.
Esto es a groso modo, busca info si quieres. Te he de advertir q han un pequeño problema con las transparencias pero se puede solucionar con un poco de vista.
Un saludo.
notbad.
HexDump escribió:Bueno, lo que se hace en lo que te comente, es tener listas de segmentos por lineas de pantalla, y se van haciendo merges de varios segmentos colindantes o que se pisan ejemplo:
PANTALLA
linea 0: |------seg 1 en layer 0 ------ |
linea 0: ___________________|--------- seg 2 en en layer 1 ---------- |
los "_" arriba son lugares sin pixeles que esto no me deja meter espacios.
Esto quedaría asi
PANTALLA
linea 0: |--------- seg 1 ----------------------------------------------|
osea, a medida que vas pintando se van fundiendo segmentos, de esta forma puedes pintar un huevo de sprites en pantalla o muchos layers sin mucho coste.
Esta técnica se usaba por ejemplo en Earth Worm Jim de pc, y no veas como iba, eso sí, es dificil implementarla bien para que corra lo que ha de correr. Mi primera implementación era un 10% más lenta que la de "Pinta todo".
Un saludo,
HexDump.