Я ищу идеи о том, как нарисовать скиновую «кнопку» в игровом приложении. Если я использую фиксированное спрайтовское не векторное изображение для фона кнопки, то я не могу легко изменить размер кнопки. Если я пишу код для рисования кнопки с изменяемым размером (например, рисуются кнопки Windows), то программист должен вмешаться - и это усложняет создание скинов. Другой вариант - разбить кнопку на 9 изображений меньшего размера (3х3) и растянуть их - как будто закругленные углы сделаны в HTML.
Есть ли другой "более легкий" способ? Какой лучший подход?
Если вы действительно хотите сделать это, способ сделать это с помощью текстурных координат. Как и в случае создания растягиваемого дизайна кнопки / панели в HTML с таблицей, вы просто определяете UV-координаты для углов, верхней растягиваемой области, нижней растягиваемой области, боковых растягиваемых областей, а затем и середины.
Пример того, как это реализовано в механизме XNA (хотя это механизм с закрытым исходным кодом), см. По адресу : http://www.flatredball.com/frb/docs/index.php?title=SpriteFrame_Tutorial
Да. Я работаю над редактором. Это XAML-подобный язык (или OpenLaszlo-подобный, если хотите) для XNA. Таким образом, размер кнопок может быть изменен редактором. Размер кнопок также можно изменить с помощью таблицы стилей.
Я думаю, вы правы, что вполне вероятно, что кнопки будут иметь одинаковый размер в реальном дизайне. Но даже в приложении окна иногда нужно сделать кнопку шире, чтобы вместить текст.
Это должно быть возможно с шейдерами. Вам, вероятно, придется выполнять поиск texel, но это сократит количество треугольников в сложном пользовательском интерфейсе.