Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Общие вопросы о Flash (не затрагивающие ActionScript) (http://www.flasher.ru/forum/forumdisplay.php?f=60)
-   -   Текстурные атласы c GPU и без (http://www.flasher.ru/forum/showthread.php?t=206743)

Akopalipsis 27.02.2014 00:05

Текстурные атласы c GPU и без
 
До конца не понимаю, как устраивают работу с атласами. Если атлас использовать для анимации, то е го нужно разобрать на кадры, а сам атлас удалить из памяти? И если я прав, то когда атласы используют с GPU, там такая же схема работы?

Zebestov 27.02.2014 00:28

Нет. В GPU (а так можно и в CPU) атлас не нарезается, а висит в памяти целиком. Для отрисовки лишь его части (отдельный спрайт или нужный кадр анимации опять же отдельного мувика) процессор оперирует геометрическими и текстурными координатами вершин квада (два треугольника, сложенные в прямоугольник), это если речь о GPU, точнее конкретно о Stage3D. В случае же с "закатом солнца вручную" — когда мы работаем с CPU — просто копируем в большую экранную BitmapData нужный кусочек атласа в нужное место.

Другое дело, что в CPU есть и второй вариант. Можно для удобства использования таки нарезать атлас на отдельные BitmapData (если это анимация, то одинакового размера), отрисовать туда отдельные кадры, аккуратно разместив их в нужном месте, и потом лишь указывать экранному объекту — экземпляру Bitmap — ссылку на нужный кадр (свойство bitmapData). Так получается довольно дешевая анимация, которая, кстати, быстрее работает как раз не в режиме CPU.

Akopalipsis 27.02.2014 00:53

Zebestov Спасибо! Пока в GPU я не лезу и уточнять буду о CPU.
С просто копируем, у меня вроде вопросов нет, так-как это скорее всего для статичных объектов,
на создание которых можно и на матрицы разорится. А вот у второго варианта мне концовка не понятна.
Цитата:

которая, кстати, быстрее работает как раз не в режиме CPU
А какой есть еще режим? я просто только-только осваиваюсь в растре и понятия не имею, как от чего работает флеш визуализация. GPU, это видеокарта и я вообще пока не берусь её рассматривать. А CPU, это процессор, который, как мне кажется и производит все вычисления во флеше. И "быстрее работает как раз не в режиме CPU" меня вынуждают на - Расскажите пожалуйста более подробнее, так-как у меня продолжения мыслей нет.

Zebestov 27.02.2014 01:01

1. Заблуждением будет считать, что с блиттингом (так называется врисовывание в "холст" прямоугольных кусков) можно делать только статику.

2. Самую обыкновенную флешку можно компилировать в режиме как CPU, так и GPU (не путать с Direct), который как раз и отличается более быстрой отрисовкой растрового контента, о котором мы здесь говорим.

Akopalipsis 27.02.2014 01:18

Цитата:

1. Заблуждением будет считать, что с блиттингом (так называется врисовывание в "холст" прямоугольных кусков) можно делать только статику.
Не могу спорить, но я высказал лишь предположение из-за того, что когда-то считал момент окончания изучения матриц, моментом быстрой геометрии. Но потом померил и выяснил, что присваивание значений, а потом и самой матрицы, снижает скорость по сравнению с обычными расчётами и свойствами.
Цитата:

2. Самую обыкновенную флешку можно компилировать в режиме как CPU, так и GPU
Вот тут просто вообще пустота... Получается, что если я сейчас у себя в FD что-то переключу, то компилироваться будет GPU?
Цитата:

(не путать с Direct), который как раз и отличается более быстрой отрисовкой растрового контента, о котором мы здесь говорим.
Уточняю - (не путать с Direct), это, Direct, относится к Stage3D? "который как раз и отличается более быстрой отрисовкой растрового контента, о котором мы здесь говорим.", это все о том же Direct?

То есть, как-то можно включить компиляцию в режим GPU, который не тот более быстрый, о котором говорят употребляя слово Starling ( Starling, это Direct ), а тот в котором второй вариант из Вашего первого поста, будет работать быстрее? я правильно понял? Если да, то как включить режим GPU?
И спасибо большое!

Zebestov 27.02.2014 01:43

Цитата:

Сообщение от Akopalipsis (Сообщение 1160777)
Не могу спорить, но я высказал лишь предположение из-за того, что когда-то считал момент окончания изучения матриц, моментом быстрой геометрии. Но потом померил и выяснил, что присваивание значений, а потом и самой матрицы, снижает скорость по сравнению с обычными расчётами и свойствами.

Так не, я тоже не спора ради. Просто чтобы ты себе не запомнил, что делать так анимации нельзя — можно очень даже.

А вот про матрицы я тебя не понял. Если речь идет о трансформациях бОльших, чем просто перемещение картинки в нужное место, то тебе они и в статике понадобятся.

Цитата:

Сообщение от Akopalipsis (Сообщение 1160777)
Вот тут просто вообще пустота... Получается, что если я сейчас у себя в FD что-то переключу, то компилироваться будет GPU?

Ага.

Цитата:

Сообщение от Akopalipsis (Сообщение 1160777)
Уточняю - (не путать с Direct), это, Direct, относится к Stage3D?

Да.

Цитата:

Сообщение от Akopalipsis (Сообщение 1160777)
"который как раз и отличается более быстрой отрисовкой растрового контента, о котором мы здесь говорим.", это все о том же Direct?

Нет. Это я как раз о GPU.

Цитата:

Сообщение от Akopalipsis (Сообщение 1160777)
То есть, как-то можно включить компиляцию в режим GPU, который не тот более быстрый, о котором говорят употребляя слово Starling (Starling, это Direct), а тот в котором второй вариант из Вашего первого поста, будет работать быстрее? я правильно понял?

Да, если мы оба говорим о методе с битмапами, которым мы в каждом кадре подменяем bitmapData.

Цитата:

Сообщение от Akopalipsis (Сообщение 1160777)
…как включить режим GPU?

Если абстрактно, не спрашивая, в какой IDE ты работаешь, то нужно в опции компилятора добавить строку:
Код:

-use-gpu=true

Akopalipsis 27.02.2014 01:52

Zebestov Приогромнейшее Спасибо! Меня эта тема мучает уже долго, но спросить решился только сегодня. И у меня ещё один маленький вопросик - наложит ли включение опции GPU, какие-то ограничения, как например в Starling на вектор? Его включение обяжет меня использовать только растр? А то от мысли - останется все так же, только работать будет быстрее, мне очень весело становится:)

Zebestov 27.02.2014 02:02

Ну тут следует вспомнить, как мы обсуждали тему CPU/GPU на этом же форуме как-то давно. Все участники сошлись во мнении, что при переключении режимов они ровным счетом никакого прироста не заметили. И все дело в том, что при малонагруженном графикой проекте разница на десктопах ничтожна, а при соизмеримом присутствии как растра, так и вектора, и вовсе может не проявиться. Возможно с тех пор что-то изменилось.

А вот где я лично столкнулся с влиянием режимов CPU/GPU, так это в AIR приложении для мобильных платформ:

1. CPU режим быстрее рисует вектор и быстрее осуществляет наш ручной блиттинг
2. GPU режим быстрее рисует растр своими нативными средствами (т.е. Bitmap & BitmapData)

Помимо этого на мобильных платформах между этими режимами существует разница (ограничения), детали которой я уже подзабыл, бо это уже давно не актуально — Starling же )

Akopalipsis 27.02.2014 02:04

Вложений: 1
У меня FlashDevelop, здесь нужно вводить ?

illuzor 27.02.2014 02:14

Akopalipsis, с этим флагом или без него, вы не заметите разницы. Вам же Zebestov выше об этом написал.
Ограничения есть, но я особо не вникал. Разве что, в gpu фильтры не будут работать.


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

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