Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Что лучше: дробные или целые значения координат? (http://www.flasher.ru/forum/showthread.php?t=137574)

КорДум 17.03.2010 02:03

Что лучше: дробные или целые значения координат?
 
Здравствуйте. Меня всегда интересовало, что быстрее сделать флешу: располагать объект каждый раз по дробным координатам или сначала отсекать дробную часть и располагать объект по целым? Объект представляет собой, скажем, падающую звезду.

gloomyBrain 17.03.2010 02:42

А без разницы, если объект в векторной графике. При рендеринге векторной графики на один логический пиксель (пиксель экрана) приходится 400 "внутренних" пикселей (твипов).

iNils 17.03.2010 03:54

По поводу быстрее не знаю, но удобнее использовать целые координаты.
Цитата:

При рендеринге векторной графики на один логический пиксель (пиксель экрана) приходится 400 "внутренних" пикселей (твипов).
Откуда такая информация?

etc 17.03.2010 09:06

Твип вообще-то равен 1/20 пикселя.

gloomyBrain 17.03.2010 11:11

Цитата:

Откуда такая информация?
swf_file_format_spec_v10.pdf

Цитата:

For example, a rectangle 800 twips wide by 400 twips high is rendered as 40 by 20 logical pixels
800 x 400 = 320000 твипов
40 x 20 = 800 пикселей
320000 / 800 = 400 (твипов на пиксель)

PS
Как бы вы разделили квадрат на 20 квадратных частей?

КорДум 17.03.2010 11:46

Без разницы для векторного. А для растра?

gloomyBrain 17.03.2010 12:28

А для растра - хм... ну тоже без разницы =)
Просто если вы делаете
Код AS3:

var myBitmap:Bitmap;
// ...
myBitmap.pixelSnapping = PixelSnapping.ALWAYS;

то размещение в нецелых координатах просто теряет смысл. В данном случае рендеринг будет заключаться в прямом "перекидывании" пикселей на экран, без какого-либо сглаживания.
Это чревато ускорением работы FP. То же самое можно сказать и про cashAsBitmap - однажды отрендеренное в растр не будет каждый кадр обрабатываться векторным рендером, а просто будет "перекидываться" на экран. Правда, памяти займет по 4 байта на пиксель.

Ой, что-то я отвлекся... =)

В общем и целом, особой разницы нет - дробные координаты или целочисленные. Как и сказал iNils - проще использовать целые, ибо к чему Вам субпиксельная точность?

Zebestov 17.03.2010 12:46

Цитата:

Сообщение от gloomyBrain (Сообщение 893613)
800 x 400 = 320000 твипов
40 x 20 = 800 пикселей
320000 / 800 = 400 (твипов на пиксель)

это что за занимательная арифметика такая 0о
т.е. на основании подсчета метров в квадратном километре ты станешь утверждать, что в километре миллион метров?

все правильно etc подбил =) а ты просто подсчитал количество квадратных твипов на квадратный пиксель... все, моск паламалсо.

iflamberg 17.03.2010 13:00

Если не использовать pixelSnapping, то обязательно используйте целые координаты, иначе будете ловить вот такие баги.

КорДум 17.03.2010 13:01

Спасибо большое. Я раньше отбрасывал дробную часть - а это лишняя операция, кушающая какую-то часть процессора, если нет разницы, так?

Добавлено через 1 минуту
2 iflamberg
Это да, но с точки зрения красивости на экране


Часовой пояс GMT +4, время: 14:57.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.