872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
|
|
1 | |
Альтернатива D3DFVF_XYZRHW16.10.2012, 00:58. Показов 2461. Ответов 14
Метки нет (Все метки)
Здравствуйте.
Все пытаюсь понять принципы разработки поверхностного интерфейса (идет прорисовка графики в 3D представлении, а затем 2D элементы управления) под DX. Очень понравился ключ D3DFVF_XYZRHW при создании фигуры, т.к. дает возможность размещения контролов по заданным координатам без лишних действий, но у него есть одна особенность - все манипуляции с матрицами игнорируются. А значит, если есть необходимость корректировки размера или положения фигуры, то нужно либо редактировать сам вертекс (через Lock() & Unlock), либо создавать его заново. Иной метод, я озвучивал в другой теме. Фигура создается по нулевым координатам, с размером по умолчанию, а далее все действия происходят через матрицы. Но в этом случае, только с одними контролами будут сотни операций с матрицами. Есть ли альтернативный метод для проектирования интерфейса под DX? Так сказать, чтобы, и волки были сыты, и овцы целы. ps. Вариант с Surface к сожалению не очень подходит, ибо к нему операции с альфа каналами прикрутить не удалось.
0
|
16.10.2012, 00:58 | |
Ответы с готовыми решениями:
14
Альтернатива CD3DMesh Улучшенная альтернатива HDD или ухудшенная альтернатива SSD Альтернатива F2 альтернатива |
117 / 75 / 5
Регистрация: 15.03.2012
Сообщений: 259
|
|
16.10.2012, 08:24 | 2 |
Ну так, для всех тех, кто ещё догнал, что никакого 3D в DirectX вообще нет поясню, что можно ваще без всяких преобразований рисовать на экране оперируя относительными координатами по всем трём осям в диапазоне от -1.0 до +1.0. Правда координата Z тут особо никакого смысла не имеет.
0
|
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
|
|
16.10.2012, 13:25 [ТС] | 3 |
Мне кажется пояснения "как" - как раз и не хватает. Если имеется ввиду, приведения матрицы в ортогональный вид, то я об этом говорил в качестве второго метода. Но рационально ли его использовать для интерфейса не понял, т.к. при прорисовке будет происходить большое количетсво операций с матрицами.
0
|
117 / 75 / 5
Регистрация: 15.03.2012
Сообщений: 259
|
|
16.10.2012, 14:44 | 4 |
Нет. Имеется ввиду, что просто напросто как обычно создай структуру типа SimpleVertex, в которой как обычно хранятся как минимум координаты точек для вертекс буффера, а вот эти координаты сделай в диапазоне, указанном выше и всё. И не нужны никакие матрицы, будешь просто как в пэйнте рисовать, но сам понимаешь, можно рисовать или комбинацией точек, или треугольников, или квадратов или кривых безье (см тесселяцию и типы входных данных в домэйн и геометрическом шейдерах)
0
|
117 / 75 / 5
Регистрация: 15.03.2012
Сообщений: 259
|
|
16.10.2012, 21:56 | 6 |
нее ты чё тесселяция только в 11-м, в девятом сплайны отпадают.
Вообще для интерфейса есть Direct2D. Он как раз с 9-го директа вроде идёт Добавлено через 58 минут На счёт Direct2D - Отбой, он всё таки только с 10-го директа, хотя на msdn написано, что в 9-м есть какой - то техникал превью....
0
|
17.10.2012, 20:06 | 7 |
Эм... не знаю как там в ДХ настраивается матрица проекций, но в ОпенГЛ можно отдельно её настроить для 2Д режима. В итоге (0,0) - это угол экрана, а противоположный - (ClientWidth,ClientHeight), как многие привыкли в 2Д, но, возможно, останутся доступны операции с матрицами. Не?
0
|
117 / 75 / 5
Регистрация: 15.03.2012
Сообщений: 259
|
|
17.10.2012, 22:37 | 8 |
Нее, тут 0,0 - середина экрана
Добавлено через 9 минут Да причём тут матрицы едрить раскодрить. Я ж говорю, что никакого 3Д на самом деле нет, то что ты загружаешь меш или там заполняешь вертексные структуры с типа 3Д координатами - это всего лишь иллюзия в твоей голове, тоесть это только ты представляешь, как там всё выглядит в 3д, компьютеру же надо это отобразить на 2-х мерном экране монитора, для этого и существуют матрицы приведения, тоесть матрицы мира, вида и проекций. Матрица мира и вида - это то, что работает опять же в твоей фантазии и если после этого не применить матрицу проекций, ты скорее всего ничего на экране не увидишь, т.к. она и создана для выбора маленького кусочка с матрицы вида и отображения проецированного изображения на экране....уж не знаю как и объяснить точнее. В общем матрица проекций приводит твои воображаемые крутые 3д координаты к координатам в диапазоне от -1 до +1. Ты свободно можешь проецировать свои крутые сцены с использованием матриц мира вида и проекций на экран, но никто тебе не мешает одновременно оверлеем рисовать прямо на экране без приведения матрицами к нужным координатам сразу в диапазоне от -1 до +1 - тоесть как вариант GUI Добавлено через 15 минут Не по теме: P.S.: Ребят, никак не могу вкурить, если делать приложения на Visual Studio Express, их можно продавать или это будет нарушением лицензии? (без MFC, ATL и прочей черганда, используя только Win32) Добавлено через 4 минуты А куда они денутся? Можно работать с матрицами и без стандартных матриц вида и проекций, создав собственные, можно ваще без директ икса, а можно и без компьютера - на листе бумаге.
0
|
18.10.2012, 01:27 | 9 | |||||
Да ладна! А если я заменю
0
|
117 / 75 / 5
Регистрация: 15.03.2012
Сообщений: 259
|
|
18.10.2012, 08:55 | 10 |
Не путай новичков всякими отхождениями от стандартной записи в учениках и примерах
0
|
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
|
|
18.10.2012, 16:30 [ТС] | 11 |
Я уже воспроизводил озвученное, через изменение матрицы проекций. Есть ссылка в первом посте.
Вопрос по сути звучит так. Что рациональней использовать для создания интерфейса под DX. Объекты с флагом D3DFVF_XYZRHW (абсолютые координаты), изменение которых, будет происходить через Lock&Unlock или объекты с флагом D3DFVF_XYZ, изменение которых будет происходит через матрицы. Главная задача, избежать "потери" контролов при изменении разрешения. Но т.к. подобная операция не будет происходить каждую минуту, то можно спокойно залезать в вертекс и изменять его. Но если "привязать" положение контрола к положению курсора, то здесь уже однозначно нужно смотреть в сторону работы с матрицами, другого решения средствами DX9 я не нашел.
0
|
117 / 75 / 5
Регистрация: 15.03.2012
Сообщений: 259
|
|
18.10.2012, 23:23 | 13 |
0
|
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
|
|
18.10.2012, 23:50 [ТС] | 14 |
У них там что-то вроде фреймворка и если кратко, то через D3DFVF_XYZRHW. Но многое из представленного там реализовано только для примера. Поэтому исходить из этого "трудно".
1
|
warchief
|
19.10.2012, 04:20
Альтернатива D3DFVF_XYZRHW
#15
|
0
|
19.10.2012, 04:20 | |
Альтернатива IN() Альтернатива 1С Альтернатива NOT IN Альтернатива GET Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |