Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.07.2010, 21:31   #1
Selestis
Форумчанин
 
Аватар для Selestis
 
Регистрация: 21.01.2009
Сообщений: 719
По умолчанию Создание GUI в DirectX

Здравствуйте, уважаемые форумчане!
Делаю я игрушку, и хочу написать для неё нормальный красивый интерфейс. Вопрос в технологии его отрисовки в Direct3d... В одном проекте делал 2 спрайта: один - граница, другой - собстно, компонент.

Выглядит это вполне сносно, учитывая дизайн того проекта, но сейчас нужно нечто получше. Что-то типа скинов думаю сделать.
Собственно, занимался ли этим кто-нибудь? Может какие-нибудь советы найдутся?
Я пока вижу только 2 метода:
- разбить спрайт на 9 частей и накладывать на каждый либо отдельную текстуру, либо одну, но с разными координатами

- рисовать в шейдере, но в этой дряни я уже успел запутаться
У кого какие мысли?
Изобретатель велосипедов

Последний раз редактировалось Selestis; 19.07.2010 в 21:37.
Selestis вне форума Ответить с цитированием
Старый 01.08.2010, 19:01   #2
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Можно поподробнее что куда?)
Оно сильно будет отличаться от OGL?
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 01.08.2010, 20:10   #3
Selestis
Форумчанин
 
Аватар для Selestis
 
Регистрация: 21.01.2009
Сообщений: 719
По умолчанию

О, ура, кто-то нашёл тему! =)
Ну, что значит поподробнее?.. Надо сделать GUI со скинами, так понятнее, наверное. Насчет OpenGL: без понятия, будет ли отличаться, но если есть мысли насчет него, всё равно говорите, буду рад)
Изобретатель велосипедов
Selestis вне форума Ответить с цитированием
Старый 01.08.2010, 21:24   #4
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
Хорошо

Я только начинаю изучать OGL, по примерам из и-нета (ну нету книг по нему в нашем магазине )...
Что есть "шейдер" не знаю...

А вот по первому варианту могу сказать:
Нужно разбить саму кнопку на 9 частей (8 частей будут бортики, а центральная - "клиентская область"), а у текстуры (одной на кнопку) как раз фиксированные координаты...
Сделать переменные "ширина бортика", BtnW, BtnH - и получится всё как нужно...)
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 01.08.2010, 21:47   #5
Selestis
Форумчанин
 
Аватар для Selestis
 
Регистрация: 21.01.2009
Сообщений: 719
По умолчанию

Ну, собственно, такой вариант и иллюстрирован на второй картинке. Минус в том, что
Цитата:
фиксированные координаты
в таком случае не прокатят: текстура может быть разного размера => нужны разные TexCoord... Чего очень не хотелось бы =) В том-то и суть моего вопроса: как обойтись в ьакой ситуации одним набором вершин и менять только текстуру + нечто нужное для этого...
Изобретатель велосипедов
Selestis вне форума Ответить с цитированием
Старый 01.08.2010, 21:59   #6
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Цитата:
нужны разные TexCoord...
А это разве проблема? У текстур есть индекс? Если есть, то просто сделать массив координат для каждой (что б индексы совпадали)...

Да почти все скины так сделаны - картинка + txt-файл с координатами-отступами...
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 01.08.2010, 22:09   #7
Selestis
Форумчанин
 
Аватар для Selestis
 
Регистрация: 21.01.2009
Сообщений: 719
По умолчанию

Тут немного другая ситуация, нежели с обычными скинами. Дело в скорости: менять набор текстурных координат для каждого элемента управления - весьма дорогое удовольствие.
Изобретатель велосипедов
Selestis вне форума Ответить с цитированием
Старый 02.08.2010, 00:03   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

двух слоев мало?
один фон другой рабочий, этого обычно хватит, в играх обычно так и есть.
Цитата:
менять набор текстурных координат для каждого элемента управления - весьма дорогое удовольствие.
эмм, или я не понял, или вы неверно написали.
почему дорогое то?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 02.08.2010, 00:39   #9
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Цитата:
менять набор текстурных координат для каждого элемента управления
Зачем менять? Просто из массива брать... о__О
Один раз задать при загрузке/перезагрузке текстуры...
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 02.08.2010, 13:54   #10
Selestis
Форумчанин
 
Аватар для Selestis
 
Регистрация: 21.01.2009
Сообщений: 719
По умолчанию

Текстурные координаты относятся к данным вершины, => в цикле отрисовки объектов с одинаковой геометрией и разными текстурными координатами нужно будет перенаправлять поток данных (SetStreamSource в Direct3d), чего собственно и хотелось бы избежать. Нужно чтобы этот самый набор координат+текс.координат был одним и тем же.
Изобретатель велосипедов
Selestis вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
c++ и gui jodam Общие вопросы C/C++ 7 18.05.2010 11:06
создание игры DirectX и C++ Nick007 Помощь студентам 0 24.03.2010 13:17
Создание сложных объектов в gui cherw9!40k Общие вопросы по Java, Java SE, Kotlin 0 22.03.2010 22:02
Создание GUI для WINDOWS inzener-tolik Помощь студентам 8 13.03.2010 11:39
GUI и Си (?) Дырдин Общие вопросы C/C++ 3 15.01.2010 20:39