Показать сообщение отдельно
Старый 16.11.2012, 16:32
Sintesis вне форума Посмотреть профиль Отправить личное сообщение для Sintesis Найти все сообщения от Sintesis
  № 18  
Ответить с цитированием
Sintesis
 
Аватар для Sintesis

Регистрация: Jul 2008
Сообщений: 912
Не демку не буду, это сложно и долго, тем более что для Away есть готовые решения. Объясню в чём суть. Все интернет GPU ускоренные технологии этим грешат и флеш и вебГЛ и даже юнити плеер - общение CPU и GPU идёт с большой задержкой по сравнению с приложениями которые стоят локально. Общение это происходит когда отрисовалось содержимое одного буфера вершин и нужно перейти к другому буферу - происходит DrawCall. Вот этих дравколов должно быть как можно меньше. Если мы добавляем объект в контекст как новый объект - он займёт весь буфер и не даст следёющему новому объекту попасть в этот буфер и не важно есть ли в буфере место или нет - каждый новый объект займёт свой отдельный буфер в видеокарте. Таким образом каждый кубик на вашей сцене провоцирует вызов дравкола. Хоть он состоит из 8 вершин, но он у вас занимает целый буфер который может вместит 60 000 вершин вызвав всего 1 дравкол. Так вот можно пихнуть все кубики в один буфер создав из них один объект и с помошью шейдеров вращать их отдельно друг от друга. Есть уже готовые библиотеки для авей и других движков например библиотека по работе с частицами Flint.