
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.30] |
![]() |
|
Сообщ.
#1
,
|
|
|
Как получить оконные координаты вершины(координаты на экране) после всех матричных преобразований в DirectX (т.е. не самому вычислять,а достать из буфера "готовые")?Как это можно реализовать?(или хотя бы 3D координаты).
|
Сообщ.
#2
,
|
|
|
координаты вершины умнажаешь на WorldViewProjection матрицу и все.
а выдрать помоему не получиться. самому вычислять. |
Сообщ.
#3
,
|
|
|
нету буфера с готовыми вершинами. все делается "on the fly".
|
Сообщ.
#4
,
|
|
|
Т.е. если у меня 500 вершин,то для вычисления их координат на эране мне нужно выполнить 500 матричных преобразований(перенос,вращение(X,Y,Z),проекция и т.д.). Т.е. параллельно вычислять их месте с direct3d (+синхронизация вычислений). Я так понял?
И даже готовые 3d координаты не достать? |
Сообщ.
#5
,
|
|
|
Цитата olegber1 @ И даже готовые 3d координаты не достать? что ты имеешь ввиду? а зачем тебе паралельно с DXом вычеслять экранные координаты? |
Сообщ.
#6
,
|
|
|
Я использую функцию SetTransform Direct3d
Т.е. direct3d сам вычисляет все матричные преобразования. А я как понял мне вы предложили мне самому вычислять координаты вершины на экране. |
Сообщ.
#7
,
|
|
|
olegber1
я чего-то не пойму чего ты хочешь сделать? |
Сообщ.
#8
,
|
|
|
Разве нет никакого выходного буфера,содержащего координаты трансформированных вершин(хотя бы 3d).
|
Сообщ.
#9
,
|
|
|
olegber1 буфера нет
что значит Цитата (хотя бы 3d). |
Сообщ.
#10
,
|
|
|
Это так от отчаяния
![]() |
Сообщ.
#11
,
|
|
|
olegber1
обьясни зачем тебе нужны эти буферы. Мож поможем |
Сообщ.
#12
,
|
|
|
Получается мне нужно самому каждый раз вычислять 3d координаты, загонять их в вершинный буфер, прорисовывать примитив,потом на основе этих 3d координат вычислять координаты на экране?
|
Сообщ.
#13
,
|
|
|
olegber1
рендер в direcx происходит в следующем порятке создаешь буфер вершин на основе какихто координат какихто точек задаешь Мировую матрицу для модели задаешь Видовую матрицу для сцены задаешь проекционную матрицу потом говоришь dx чтобы нарисовал твой буфер и он рисуется сразу же на экране сам все вычисляет и ставит точки туда куда надо. |
Сообщ.
#14
,
|
|
|
Дак вот мне надо узнать куда он поставил эту точку на экране
|
Сообщ.
#15
,
|
|
|
ну тогда самому вычислять
|
Сообщ.
#16
,
|
|
|
Цитата olegber1 @ Получается мне нужно самому каждый раз вычислять 3d координаты, загонять их в вершинный буфер, прорисовывать примитив,потом на основе этих 3d координат вычислять координаты на экране? Т.е. таким образом |
Сообщ.
#17
,
|
|
|
Цитата olegber1 @ Т.е. таким образом да только не мог бы ты поделиться, зачем тебе это надо? |
Сообщ.
#18
,
|
|
|
Вообще задача стоит следующая:следующая кубик(36 вершин) двигается по экрану(Это реализовано Вычисляет всё direct3d).
Нужно выводить координаты его вершин.Кубиков может быть 10 штук(соответственно 36 вершин). Добавлено Ну выводить нужно само сабой 4 вершины у каждого кубика |
Сообщ.
#19
,
|
|
|
Цитата olegber1 @ Нужно выводить координаты его вершин Экранных? |
Сообщ.
#20
,
|
|
|
Экранных
|
Сообщ.
#21
,
|
|
|
olegber1
ну удачи |
Сообщ.
#22
,
|
|
|
Спасибо, буду искать дальше
|
Сообщ.
#23
,
|
|
|
Цитата olegber1 @ кубик(36 вершин) Это сколькомерный кубик-то? ![]() |
Сообщ.
#24
,
|
|
|
Цитата barazuk @ Это сколькомерный кубик-то если с текстурами и нормалями то как раз |
Сообщ.
#25
,
|
|
|
Ещё такой вопрос как бы Вы решили эту задачу?
|
Сообщ.
#26
,
|
|
|
XandoX
ну так бы и решили тока почему Цитата olegber1 @ Ну выводить нужно само сабой 4 вершины у каждого кубика |
Сообщ.
#27
,
|
|
|
Опечатался, конечно координаты 8 вершин,которые лежат на углах кубика
|
Сообщ.
#28
,
|
|
|
а можно как-нибудь для решения этой проблемы использовать буфер IDirect3DDevice8::ProcessVertices?
|
Сообщ.
#29
,
|
|
|
olegber1
да незнал про эту функцию |
Сообщ.
#30
,
|
|
|
Вот только как интересно?
Кто-нибудь мог бы подсказать примерный порядок действий. |
Сообщ.
#31
,
|
|
|
создаешь свой кубик
устанавливаешь матрицы создаешь доп буфер пока пустой с нужным тебе FVF устанавливаешь буфер кубика в поток вызываешь эту функцию и там у тебя то что нужно только в SDK написано что если вершина не попала в фрустум то она сохраниться только в проекционном виде. и все. |
Сообщ.
#32
,
|
|
|
спасибо
|
Сообщ.
#33
,
|
|
|
Ничего не получается. Не могли бы Вы выложить часть кода (на delphi,c)?
|
Сообщ.
#34
,
|
|
|
olegber1
лучше сам выложи, что у тебя получилось |
Сообщ.
#35
,
|
|
|
Цитата XandoX @ что у тебя получилось Цитата olegber1 @ Ничего Или всё-таки хоть что-то? |
Сообщ.
#36
,
|
|
|
Всё работает как написано в SDK.Спасибо за помощь.
|