Я пытаюсь закрасить круг вокруг игрока в моем боковом 2D-скроллере, но получаю овал! Вот часть кода, которую я использую, которая имеет значение:
if(length(abs(coords - playerCoords)) < .1)
{
color = color *float4(1,0,1,1);
}
return color;
Размер моего экрана составляет 1280 в ширину и 720 в высоту. Я знаю, что это причина искажения, но я недостаточно знаю о своей проблеме, чтобы придумать или найти решение. Может мне кто-нибудь объяснить, как компенсировать растяжение экрана?
Благодарность!
-ATD
0
ATD
24 Янв 2013 в 06:03
1 ответ
Лучший ответ
Умножьте термин «abs ()» на «float2 ((720./1280.), 1.0)» - или каким бы ни было ваше соотношение сторон y / x.
Используемые вами координаты нормализованы в интервале 0-1, поэтому просто исправьте их.
0
bjorke
24 Янв 2013 в 07:59
Кстати, abs () не нужен - length () всегда положительный. Это правда, что для всех известных мне графических процессоров abs - это модификатор хранилища, поэтому он, по сути, бесплатный, но: здесь он не требуется.
– bjorke
30 Янв 2013 в 07:11
Да, ты прав. Не знаю, зачем я это туда положил. Я даже знал это.
– ATD
31 Янв 2013 в 00:24
Похожие вопросы
Новые вопросы
2d
2D компьютерная графика - это компьютерная генерация цифровых изображений - в основном из двумерных моделей.