Просмотр полной версии : Оптимизация при помощи BitmapData
Akopalipsis
10.02.2014, 17:34
Думая, как более понятно изложить вопрос, понял, что не знаю и решил объяснить всё с самого начала, возможно Вы поймете.
В самом начале, мне каким-то мистическим образом, попалась статья ( правда о css ), где говорилось о оптимизации ( чего не помню ) при помощи текстуры. Вот есть экран большого разрешения, а оптимизация заключается в том, чтобы сделать маленький кусочек текстуры и размножить его. И вот я почти год жил с мыслью, что сделаю также, но сейчас мысли разбегаются. Первое что сейчас приходит в голову, так это то, что уменьшится размер загружаемой текстуры. Но я все равно решил спросить, а вдруг и есть способ, размножить маленькую текстура на большой площади. Есть?)
И еще вот какой вопрос - есть атлас, на котором для удобства есть несколько закрашенных пикселей, которые нужно использовать для закрашивания не интерактивной области. И тут я, как сейчас кажется, опрометчиво взял эти пиксели и отрисовал в большую bmd с масштабированием матрицы. Но сейчас мне кажется, что это не правильно, ведь я в памяти создал гигантскую bmd и правильней было бы масштабировать bm.. Это так?
Но я все равно решил спросить, а вдруг и есть способ, размножить маленькую текстура на большой площади. Есть?)
Вы можете залить фигуру картинкой (с повторением) с помощью
obj.graphics.beginBitmapFill()
И еще вот какой вопрос - есть атлас, на котором для удобства есть несколько закрашенных пикселей, которые нужно использовать для закрашивания не интерактивной области. И тут я, как сейчас кажется, опрометчиво взял эти пиксели и отрисовал в большую bmd с масштабированием матрицы. Но сейчас мне кажется, что это не правильно, ведь я в памяти создал гигантскую bmd и правильней было бы масштабировать bm.. Это так?
Тут не пойму вашу задачу. Вам нужна большая картинка одного цвета?
Akopalipsis
10.02.2014, 19:05
Вы можете залить фигуру картинкой (с повторением) с помощью
Вот смотрите - у меня есть маленькая картинка - текстура, синий квадрат с маленьким зеленым квадратиком в центре. И мне нужно сделать текстуру из повторений этой маленькой. Если я её начну рисовать с повторением в большую bitmapData, то я сделаю только хуже ( в плане оптимизации ), так-как в памяти будет висеть большая bitmapData. И Вы предлагаете залить при помощи Graphics, а это не будет тем же самым? Как тогда рисует Graphics, если он не помещает в память большую bitmapData?
Тут не пойму вашу задачу. Вам нужна большая картинка одного цвета?
Да. Допустим у меня в атласе 2x2 квадратик цвета, которым мне нужно залить фон. И тут опять возвращение к первой части вопроса. Если я залью этим квадратиком большую bitmapData, то получится, что в памяти висит большой холст. Но тут два вопроса в одном - если я помещу в bitmap этот квадратик 2х2 и потом применю масштабирование, то в памяти будет висеть ведь 2х2? А если я перерисую этот квадратик в большую bitmapData и применю матрицу с масштабом, то в памяти все равно будет висеть bitmapData большая?
>>если я помещу в bitmap этот квадратик 2х2 и потом применю масштабирование, то в памяти будет висеть ведь 2х2? А если я перерисую этот квадратик в большую bitmapData и применю матрицу с масштабом, то в памяти все равно будет висеть bitmapData большая?
если вы создадите bitmapData размером 2x2, то в памяти будет висеть bitmapData размером 2x2
а вот если большую bitmapData, в памяти будет висеть большая - неожиданно, неправдали ?
кроме graphics.beginBitmapFill, размножить маленькую, не создавая большой, можно еще наплодив Bitmap'ов из одной BitmapData
Akopalipsis
10.02.2014, 19:40
а вот если большую bitmapData, в памяти будет висеть большая - неожиданно, неправдали ?
Да нет, просто была надежда, что при draw с матрицей, флеш плеер поймёт, что нужно рисовать не большую bitmapData, а лишь растянуть и... и можно на этом остановиться, а то волшебство получается:)
кроме graphics.beginBitmapFill, размножить маленькую, не создавая большой, можно еще наплодив Bitmap'ов из одной BitmapData
А что лучше graphics или Bitmap?
Добавлено через 1 минуту
И прошу прощения - samana, silin, Спасибо!
Поймал себя на мысли, что не поблагодарил и как-то жутко стало:)
>>А что лучше graphics или Bitmap?
причина, по которой мы используем или graphics или Bitmap, не всем понятна и чрезвычайно метафизична, но я попробую вам объяснить её одной фразой. Фраза эта звучит так: что удобнее, то и лучше
Dukobpa3
10.02.2014, 20:00
graphics - вектор.
bitmap - растр.
Вот собственно и вся разница, со всеми вытекающими.
Akopalipsis
10.02.2014, 20:16
Фраза эта звучит так: что удобнее, то и лучше
Для меня самый лучший пример ( пока ) работы с растром, это Starling и прежде чем я задал этот и прошлый вопрос, я много и много пытался понять, что происходит так, когда задаёшь значение параметру repeat = true. Но там Stage3D и Scale9, которые я ещё не понимаю и считаю, что в эту сторону рановато посматривать. Вот и решил спросить надеясь на конкретику.
Dukobpa3 Спасибо! Тогда наверное плодить Bitmap, так-как уходя от вектора, возвращаться к нему, кажется нелогичным. Или это не так?
Dukobpa3
10.02.2014, 20:21
разница, со всеми вытекающими.
Ответ здесь.
>>Тогда наверное плодить Bitmap, так-как уходя от вектора, возвращаться к нему, кажется нелогичным. Или это не так?
ничего личного, но нелогичным мне кажется бомбить форум риторическими вопросами в поисках какого-то абстрактного абсолюта, ибо вряд ли его можно найти
в рамках конкретных задачек по-любому придется не раз уходить от вектора и возвращаться к нему, поэтому чем удобнее\быстрее\логичнее, тем и лучше :)
bitmap меньше грузит систему, но в graphics можно залить любой шейп(а не только прямоугольник),
с битмапами будет доступ к отдельным элементам, но в graphics можно залить с искажениями (drawTriangles), и т.д.
к слову, в упомянутом stage3D в этом смысле реализована некая идеальная ситуация - заливка текстур в любую(условно) геометрию, по любым (в рамках поддерживаемых шейдерами) правилам, в старлинге все это обернуто в аналог привычного дисплейЛиста с блекджеком и feathers'ом событиями и компонентами, при бешеной (по сравнению со stage'выми graphics и bitmap) производительности, в общем гуляй не хочу..
короче окончательное снятие с повестки вопроса graphics vs bitmap дело недалекого будущего, ага (имхо, конечно)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.