Возникла задача создать оконный интерфейс под Direct3D с контролами (buttons, radio buttons,checkbox, editbox,listview,combobox,sliders, scrollbars). В принципе это я реализовал. Вопрос в следующем. Отрисовка мелких элементов осуществляется с помощью геометрии (линия — прямоугольник из 2х треугольников с текстурой), что довольно накладно получается ИМХО. Может кто знает другой способ? Как это интересно реализовано в Vista, ведь там gdi это обертка над DirectX, т.е. каким образом они отрисовывают grid'ы и более сложные элементы, состоящие из множества мелких деталей.
Здравствуйте, Аноним, Вы писали:
А>Возникла задача создать оконный интерфейс под Direct3D с контролами (buttons, radio buttons,checkbox, editbox,listview,combobox,sliders, scrollbars). В принципе это я реализовал. Вопрос в следующем. Отрисовка мелких элементов осуществляется с помощью геометрии (линия — прямоугольник из 2х треугольников с текстурой), что довольно накладно получается ИМХО. Может кто знает другой способ? Как это интересно реализовано в Vista, ведь там gdi это обертка над DirectX, т.е. каким образом они отрисовывают grid'ы и более сложные элементы, состоящие из множества мелких деталей.
Накопить сколько тебе надо, отсортировать по текстуре, например, и вперед — отрисовывать всё скопом.
Re[2]: DirectX отрисовка интерфейса
От:
Аноним
Дата:
29.01.07 14:17
Оценка:
Здравствуйте, _DK_, Вы писали:
_DK>Накопить сколько тебе надо, отсортировать по текстуре, например, и вперед — отрисовывать всё скопом.
Да у меня и так все в одной текстуре (весь интерфейс), даже шрифт. Так что переключения между ними минимальны. Я просто хотел узнать, как это сделано в Vista. Или допустим захочу я отрисовывать векторную графику с заливками, что мне тогда каждую линию полигоном представлять? Просто в голову amanith приходит, но он под OpenGL, а как быть в DX.
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, _DK_, Вы писали:
_DK>>Накопить сколько тебе надо, отсортировать по текстуре, например, и вперед — отрисовывать всё скопом.
А>Да у меня и так все в одной текстуре (весь интерфейс), даже шрифт. Так что переключения между ними минимальны. Я просто хотел узнать, как это сделано в Vista. Или допустим захочу я отрисовывать векторную графику с заливками, что мне тогда каждую линию полигоном представлять? Просто в голову amanith приходит, но он под OpenGL, а как быть в DX.
Во-первых, я говорил о треугольниках, а не не переключениях текстур, т.е. всё как обычно — копишь батч, потом разом отрисовываешь. Не думаю, что у тебя там набирается сильно больше пары тысяч треугольников — это сущие пустятки.
Во-вторых, висту сам не видел, но не вижу никаких проблем с тем, что ты описал (опять же никто не отменял возможность триангуляции монотонных полигонов).
В-третьих, всё что можно в ОГЛ и в ДХ реально =) .
Re[4]: DirectX отрисовка интерфейса
От:
Аноним
Дата:
29.01.07 20:28
Оценка:
Здравствуйте, _DK_, Вы писали:
_DK>Во-первых, я говорил о треугольниках, а не не переключениях текстур, т.е. всё как обычно — копишь батч, потом разом отрисовываешь.
Батчингом и пользуюсь 8) т.е. завожу вертекс буфер достаточных размеров, заполняю его геометрией интерфейса, и вызов DrawIndexPrimitive, т.к. все еще и проиндексировано. Вроде все достаточно быстро работает. Наверно придется продолжать свои эксперименты ))) Но у меня сложилось мнение, что на GDI или GDI+ плоский интерфейс куда легче реализуется.
Здравствуйте, Аноним, Вы писали:
А>Возникла задача создать оконный интерфейс под Direct3D с контролами (buttons, radio buttons,checkbox, editbox,listview,combobox,sliders, scrollbars).
Viksoe я смотрел, неплохо написано, мне лично понравилось. Все понятно, но это ИМХО. С DirectX там связана только анимация, он берет контекст GDI и отрисовывает анимацию с помощью Direct3D. Выглядит неплохо.
Елси касаться только Direct3D, то для страждущих можно еще посмотреть более менее развитые
Popcap, Irrlicht, конечно же Microsoft GUI, может быть HGE (мало контролов) и OGRE.