Я делаю шутер сверху вниз, который опирается на аватар, который всегда поворачивается, указывая на курсор мыши. Я достигаю поворота следующим образом:
//Rendering.
context.save(); //Save the context state, we're about to change it a lot.
context.translate(position[0] + picture.width/2, position[1] + picture.height/2); //Translate the context to the center of the image.
context.rotate(phi); //Rotate the context by the object phi.
context.drawImage(picture.image, -picture.width/2, -picture.height/2); //Draw the image at the appropriate position (center of the image = [0, 0]).
context.restore(); //Get the state back.
Когда значение phi
равно нулю, изображение отображается в обычном качестве, с острыми краями и обнаруживаемыми пикселями. Но, когда я устанавливаю значение phi
на ненулевое значение (фактически, когда оно не 0
, Pi/2
, Pi
, Pi+Pi/2
или 2Pi
), изображение теряет остроту, и отдельные пиксели могут больше не видно, потому что они размыты.
Вот скриншот (извините за общее плохое качество снимка экрана, но я думаю, что разница более чем заметна):
Это, ну, немного неприемлемо. Я не могу иметь изображения всегда размыты! Почему это происходит и могу ли я его решить?