Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 16.01.2020, 23:14
artem2033 вне форума Посмотреть профиль Отправить личное сообщение для artem2033 Найти все сообщения от artem2033
  № 1  
Ответить с цитированием
artem2033

Регистрация: Nov 2013
Сообщений: 74
По умолчанию Возникла проблема при отрисовки рендер таргета обратно на сцену

Есть текстура в которую рисуются символы, и их нужно отрисовать с той же глубиной на сцену, с которой они были нарисованы. Думал рендерить 2 текстуры одну с глубиной другую с символами, после проверять в шейдере перекрывает ли текущий пиксель буфер глубины. Вот только чтение из буфера не доступно. Единственный, до которых я додумался, это не использовать стандартный буфер глубины, а создать свой. Так вот, есть ли другие какие способы без рендеринга каждого символа отдельно?

Старый 17.01.2020, 17:22
artem2033 вне форума Посмотреть профиль Отправить личное сообщение для artem2033 Найти все сообщения от artem2033
  № 2  
Ответить с цитированием
artem2033

Регистрация: Nov 2013
Сообщений: 74
Кажется нашёл решение.
Рендерю всё в текстуру с координатами каждого символа/объекта, потом использую эту текстуру как текстурный-атлас, и с такими же данными, высчитывая в шейдере текстурные координаты отрисовываю на сцену. Вот только не знаю, как это скажется на производительности.
Изображения
 

Старый 17.01.2020, 21:59
Bletraut вне форума Посмотреть профиль Отправить личное сообщение для Bletraut Найти все сообщения от Bletraut
  № 3  
Ответить с цитированием
Bletraut
 
Аватар для Bletraut

Регистрация: Mar 2013
Адрес: Вне пространства.
Сообщений: 566
Отправить сообщение для Bletraut с помощью ICQ Отправить сообщение для Bletraut с помощью Skype™
А какая стоит задача? Почему нельзя просто хранить порядок отрисовки в текстуру и потом в таком же порядке на сцену рисовать?
__________________
Я заклинаю вас действовать иначе.

Старый 17.01.2020, 22:31
artem2033 вне форума Посмотреть профиль Отправить личное сообщение для artem2033 Найти все сообщения от artem2033
  № 4  
Ответить с цитированием
artem2033

Регистрация: Nov 2013
Сообщений: 74
Задача отрисовать из текстуры объекты в таком же порядке в каком они были отрисованы в неё за 2 прохода, один в текстуру, второй на сцену. Порядок отрисовки?
Вот как на скриншоте, символы были отрисованы в одном пакете, а квадрат в другом и он половину перекрывает, а другую нет.

Старый 17.01.2020, 23:16
Bletraut вне форума Посмотреть профиль Отправить личное сообщение для Bletraut Найти все сообщения от Bletraut
  № 5  
Ответить с цитированием
Bletraut
 
Аватар для Bletraut

Регистрация: Mar 2013
Адрес: Вне пространства.
Сообщений: 566
Отправить сообщение для Bletraut с помощью ICQ Отправить сообщение для Bletraut с помощью Skype™
Как буквы отрисовываются в текстуру? В цикле рисуется каждая буква через отдельный вызов draw или это всё один большой меш, а каждая буква это 2 полигона?

Добавлено через 3 минуты
Если это 2д, то буффер глубины вообще можно отключить. Если нужно просто отрисовывать объекты поочереди то можно поступить так, для квадрата вызываем draw, он рисуется на сцене, следующий драв вызвать для букв они рисуются на сцене поверх квадрата, либо наоборот если нужен иной порядок, к тому же это будет значительно быстрее работать без Z-буффера (я думаю тут идёт речь о нем, т.к. во флеше нет полноценного depth-буффера как в opengl).
__________________
Я заклинаю вас действовать иначе.

Старый 17.01.2020, 23:39
artem2033 вне форума Посмотреть профиль Отправить личное сообщение для artem2033 Найти все сообщения от artem2033
  № 6  
Ответить с цитированием
artem2033

Регистрация: Nov 2013
Сообщений: 74
Получается так, собирается вся геометрия в буфер вершин и индесов, потом за 1 вызов draw все символы рисуются в текстуру, то есть да как 1 меш. Каждая буква это не квад, это контуры, в виде координат из файла шрифта. Если я его отключу, то придётся делать сортировку всего что на сцене, тогда вырастет количество drawCalls. И с каждой такой сортировкой ещё и придётся данные для видеокарты упаковывать заново. А с z-буфером(который я называю, буфером глубины), 1 раз всё упаковал и только меняешь z координату. Это вы же про Painter - алгоритм, не знаю пока что 60000 символов 7 мс времени занимают, мне кажется этого достаточно.

Создать новую тему Ответ Часовой пояс GMT +4, время: 13:38.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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