mr.smart
29.04.2010, 16:19
Добрый вечер, проблема в следующем:
Есть спрайт, который вращается в пространстве. Нужно наложить на него bitMap-текстуру. Соответственно, как мне видится, нужно перерисовывать bitMap-изображение чтобы создать видимость перспективы.
Сделал я эту "перерисовку" следующим алгоритмом:
qua = //кол-во прямоугольников, на которые разбивается изображение по горизонтали
w = //ширина этих прямоугольников
pic_h = //высота изображения
for (i = 0; i <= qua-1; i++) { //Проходимся по каждому прямоугольнику
v = //высчитывается во сколько раз нужно стянуть прямоугольник по высоте;
for (j = 0; j <= pic_h; j+=v) { //Сжимаем прямоугольник
myBitmapData.copyPixels(myBitmapData2, new Rectangle(i*w, j, w+1, 2), new Point(i*w, j/v));
}
}
Все более-или-менее работает (swf-ку прикрепляю), проблема в том что ТОР-МО-ЗИТ ! Если подумать, то это и не удивительно, ведь БитМапка перерисовывается около 500 раз за кадр...
Вот собственно и вопрос: как это можно оптимизировать/переделать, чтобы не тормозило ?
Есть спрайт, который вращается в пространстве. Нужно наложить на него bitMap-текстуру. Соответственно, как мне видится, нужно перерисовывать bitMap-изображение чтобы создать видимость перспективы.
Сделал я эту "перерисовку" следующим алгоритмом:
qua = //кол-во прямоугольников, на которые разбивается изображение по горизонтали
w = //ширина этих прямоугольников
pic_h = //высота изображения
for (i = 0; i <= qua-1; i++) { //Проходимся по каждому прямоугольнику
v = //высчитывается во сколько раз нужно стянуть прямоугольник по высоте;
for (j = 0; j <= pic_h; j+=v) { //Сжимаем прямоугольник
myBitmapData.copyPixels(myBitmapData2, new Rectangle(i*w, j, w+1, 2), new Point(i*w, j/v));
}
}
Все более-или-менее работает (swf-ку прикрепляю), проблема в том что ТОР-МО-ЗИТ ! Если подумать, то это и не удивительно, ведь БитМапка перерисовывается около 500 раз за кадр...
Вот собственно и вопрос: как это можно оптимизировать/переделать, чтобы не тормозило ?