Buenasss. ¿Alguien sabe como funciona el algoritmo de antialising? Quiero implementar antialiasing en mis funciones de copia en 2d caseras así que tengo que currarmelo a mano.
¿Sabeis como implementarlo a algún site donde encontrar info?
Saludos
--plugin
Una manera simplona seria cojer los valores de color un pixel y alrededor y hacer la media, luego pones ese pixel con ese valor....
pero recuerda escrivir el resultado en una surface distinta a la que lees!!! qui si no!!! XD
Una cosa es antialising y otra cosa es ponerlo todo borroso.
Si quieres hacer un buen antialising (yo no tengo ni p idea de como hacerlo) se tiene que hacer con gráficos vectoriales.
Si por el contrario lo que quieres es un filtro borroso sólo tienes que recurrir al gaussian que si no recuerdo malamente se hacía aplicando una matriz a los pixels.
Por otro lado si lo que tiene es una imagen escalada y lo que quieres es olvidare de lo horrible que queda puedes recurrir a varios algoritmos (la mayoría solo funcionan en imágenes escaladas x2).
Y por último la chorrada que no falte... si lo que quieres es anti lising recurre a alguien que sepa de economía.
Tal vez si probaras con algún algoritmo de detección de bordes y a estos le aplicases una media (jamas a la imagen entera:=obtendrias una porqueria), eliminases un poco ese efecto. Sin embargo, esos algoritmos no son infalibles ni mucho menos, asi que...no creo que sea esa la solucion utilizada normalmente para hacer antaliasing, pero por probar no pierdes nada;
end.
Holas, yo qiero hacer algo parecido al antialiasing en un remake de un juego 2d.
Te recomiendo qe veas el 2xsai, qe es una tecnica utilizada por emuladores de consolas viejas y da buen resultado.
http://elektron.et.tudelft.nl/~dalikifa/tb tienes el eagle engine, qe ahora ha cambiado de nombre, y la web es
http://www.retrofx.com pero por ahora no rula.
Espero que te sirva, byeses.
Un dia me dio la vena y estuve retocando el código fuente del emulador fMSX para que hiciera un filtro. Es muy cutre pero da el pego:
for(i=0; i < WIDTH*HEIGHT; i += WIDTH*2)
for(j=i; j < i+WIDTH; j++)
{
if(copy[j - 1] == copy[j - WIDTH])
pixels[j] = copy[j - 1];
if(copy[j + 1] == copy[j - WIDTH])
pixels[j] = copy[j + 1];
}
Da el pego, pero a veces algunas esquinas no quedan muy bien. Me lo inventé porque no tenia ni p idea de hacer uno y me salió ese engendro.
Ahora puedo jugar al Nemesis 2 sin ver esos pedazo de pixels feisimos :sonriendo:
Juas, acabo de hacerme una funcion usando tu codigo para el remake qe toy asiendo y parece qe se ha derretido el personaje xDD
Ta curiosa, pero en mi juego se come los bordes de la pantalla qe da gusto.
Lo weno esqe se tarda 30 segundos en ponerla en tu programa :ojo: