Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   API приложений и сред (http://www.flasher.ru/forum/forumdisplay.php?f=61)
-   -   [...] GUI поверх Stage3D, выбор метода (http://www.flasher.ru/forum/showthread.php?t=195944)

C4Grey 16.03.2013 09:44

GUI поверх Stage3D, выбор метода
 
Доброго всем времени суток
Решил поосновательнее подойти к новому игровому проекту на Stage3D, и начать с небольшого опроса в комьюнити. Как считаете, какой метод вывода двухмерного GUI поверх контента, который отрисовывается при помощи Stage3D будет лучше(по скорости отрисовки, удобству кодинга, количеству фич)? Базовые варианты: реализовать на Stage3D(Feathers, либо свой велосипед, что нежелательно), либо при помощи какой-то их сущетсвующих библиотек. Проект ориентирован на web, Android, iOS. Приветствуются обоснования, примеры из собственного опыта, ссылки на вменяемые ресурсы.

Astraport 16.03.2013 11:19

Перья

C4Grey 16.03.2013 12:16

Да, это кажется логичным, если бы не пару "но":
1. Пример ComponentsExplorer показывает 90 DC на экране с примером List(если показывать панель навигации и экран примера одновременно) - как-то многовато для множества однотипных элементов. Хотя, в данном случае его может оправдать то, что текст выводится при помощи отрисовки в текстуру. В диздоке проекта мы как раз наметили один такой "экран" - список рекордов игроков, в нем одновременно выводится список, игровое меню и фон(в такой компоновке оно будет использоватся на планшетах и в браузерной версии).
2. В этом не уверен на 100%, но, как я вижу, в нем нету полноценой поддержки событий мыши(по крайненй мере, для стандратных элементов GUI), из-за чего привычные элементы управления, используемые в браузерной версии будут выглядеть неполноценно, без реакции на MOUSE_OVER/OUT. Впрочем, может там вполне удобная система линковки состояний шкурки к событиям и добавить свои состояния не составит особого труда - пока не смотрел.

Astraport 16.03.2013 12:47

Цитата:

90 DC
Что это простите?

Событий мыши более чем достаточно.
Слушаете TouchEvent.TOUCH
Вызываете event.getTouch(TouchPhase.HOVER)

Zebestov 16.03.2013 13:47

Цитата:

Сообщение от Astraport (Сообщение 1125488)
Что это простите?

DC, Draw Call, вызов метода Context3D.drawTriangles().
90 — это многовато как-то.

C4Grey 16.03.2013 14:17

2Astraport
Я имею в виду возможность "из коробки" прицепить к стнадартной кнопке(или любому другому контролу) элемент шкурки, автоматичские используемый для этих состояний мыши. Все что я видел в демках, заточено на прикосновения. Кроме того, без костыля отследить выход мыши за границы элемента GUI не получится. Конечно, можно и дописать этот функционал, но для этого нужно быть уверенным, что буду использовать Feathers.
2Zebestov
Да уж как есть, демка полностью стандартная, вот скриншот:
http://d.pr/i/F5uC
Я точно не уверен, но если не ошибаюсь, там рендер TextField в текстуру происходит при выводе надписей, хотя есть и растровые шрифты.
В Starling какая-то странная штука с батчингом текста, у меня был момент, когда использовались 10 элементов, состоящих из картинки и текста + 2 фоновых изображения - стандратная менюшка выбора уровней. Элементы использовали одну текстуру из атласа для фона, шрифт был в другом атласе. Все это в суме выдавало 24 DC. Скорее всего, пробелма в иерархии(каждый такой элемент - Sprite, содержащий фон-Image и TextField, все 10 Sprite-ов находятся в общем контейнере), в подобных случаях нужно вручную формировать батчи.
P.S.
Попробовал другую тему(AzureMobile), где вроде используется растровой шрифт - 91 DC.
И что интересно, сам экран со списоком вполне укладывается в 24 DC: http://d.pr/i/g68E А ведь все, кроме шрифтов, в одном атласе...

C4Grey 19.03.2013 16:45

Второй вопрос снимается, этот функционал в Feathers реализован. Тогда осталось приделать какую-то систему батчинга для текста и выбор вполне очевиден.


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

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