Pregunta

Estoy usando Löve2D para escribir un pequeño juego. Löve2D es un motor de juego de código abierto para LUA. El problema que estoy encontrando es que algún filtro antialias se aplica automáticamente a los sprites cuando se dibuja en las posiciones que no sean números enteros.

love.graphics.draw( sprite, x, y )

Así que cuando x o y no es redonda (por ejemplo, x = 100,24), el sprite aparece borrosa. Lo mismo sucede cuando el tamaño del sprite no es uniforme, debido a que (x, y) apunta a la centro de la sprite. Por ejemplo, un sprite que es 31x30 grande aparecerá borrosa de nuevo, porque sus píxeles están pintadas en posiciones no enteros.

Desde que estoy usando el arte del pixel, quiero evitar esto hasta el final, de lo contrario el arte es destruido por este efecto. La solución que estoy usando hasta ahora es forzar las coordenadas a ser redonda por ensuciar el código con llamadas a Math.floor (), y obligando a todos los sprites tener incluso tamaños mediante la adición de una fila o columna de píxeles transparentes con el programa de dibujo , si es necesario.

¿Hay algún comando para desactivar el antialiasing puedo llamar al inicio del programa?

¿Fue útil?

Solución 3

En caso de que a alguien le interesa, me he estado preguntando en otros lugares, y se informó de que lo que estoy preguntando ya está solicitada como función: http://love2d.org/forum/tracker.php?p=2&t=7

Por lo tanto, la versión actual de amor que estoy usando (0.5.0) todavía no permite desactivar el filtro de enmascaramiento, pero la característica ya está en la versión SVN del motor.

Otros consejos

Si apaga anti-aliasing que se acaba de obtener aliasing, de ahí el nombre! ¿Por qué estás dibujando en las posiciones no integrales, y ¿qué quieres que hacer con ellas las fracciones? (Ronda de ellas al valor más cercano? Truncar ellos? ¿Qué pasa si son negativos?)

En lo personal me gustaría dejar los gráficos de bajo nivel solo y modificar el código para utilizar descriptores de acceso para x e y que llevan a cabo el redondeo o truncamiento que necesita. Esto garantiza el pixel art termina dibuja en los límites enteros mientras se mantiene el suavizado en lo que pueda necesitar más adelante.

Otra posible solución puede ser utilizar Math.floor () para redondear sus números enteros como una solución barata.

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