На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела "Программирование графики"
1) Данный раздел предназначен для обсуждения проблем, возникающих при программировании задач, связанных с чтением, сохранением, обработкой, созданием, отрисовкой графической информации (в том числе - 3D [OpenGL, Direct3D] и анимации [в т.ч. VFW, DirectShow, OpenDML]).
Флэш обсуждают здесь!.

2) Если вы хотите получить совет для конкретной платформы/языка программирования, обязательно укажите их в вопросе.

3) Уважаемые новички! Мы приветствуем Ваше желание научить всех посетителей раздела правильному программированию. Но огромная просьба, перед тем, как писать поучения в старых (последний ответ - "старее" месяца, а особенно, если вопрошавший не появляется на форуме уже не первый месяц, в чем можно убедиться в его профиле) темах, хорошо подумать, будет ли кому-нибудь, кроме Вас cамих, это интересно.



Ваше мнение о модераторах: user posted imageBarazuk, user posted imageOpenGL, user posted imageMikle
Модераторы: OpenGL, Mikle
  
> Помогите пожалуйста , Оконные координаты вершины
    Как получить оконные координаты вершины(координаты на экране) после всех матричных преобразований в DirectX (т.е. не самому вычислять,а достать из буфера "готовые")?Как это можно реализовать?(или хотя бы 3D координаты).
      координаты вершины умнажаешь на WorldViewProjection матрицу и все.
      а выдрать помоему не получиться. самому вычислять.
      Сообщение отредактировано: XandoX -
        нету буфера с готовыми вершинами. все делается "on the fly".
          Т.е. если у меня 500 вершин,то для вычисления их координат на эране мне нужно выполнить 500 матричных преобразований(перенос,вращение(X,Y,Z),проекция и т.д.). Т.е. параллельно вычислять их месте с direct3d (+синхронизация вычислений). Я так понял?

          И даже готовые 3d координаты не достать?
            Цитата olegber1 @
            И даже готовые 3d координаты не достать?

            что ты имеешь ввиду?

            а зачем тебе паралельно с DXом вычеслять экранные координаты?
              Я использую функцию SetTransform Direct3d
              Т.е. direct3d сам вычисляет все матричные преобразования.
              А я как понял мне вы предложили мне самому вычислять координаты вершины на экране.
                olegber1

                я чего-то не пойму чего ты хочешь сделать?
                  Разве нет никакого выходного буфера,содержащего координаты трансформированных вершин(хотя бы 3d).
                    olegber1 буфера нет

                    что значит
                    Цитата
                    (хотя бы 3d).
                      Это так от отчаяния :'(
                        olegber1

                        обьясни зачем тебе нужны эти буферы. Мож поможем
                          Получается мне нужно самому каждый раз вычислять 3d координаты, загонять их в вершинный буфер, прорисовывать примитив,потом на основе этих 3d координат вычислять координаты на экране?
                            olegber1

                            рендер в direcx происходит в следующем порятке

                            создаешь буфер вершин на основе какихто координат какихто точек
                            задаешь Мировую матрицу для модели
                            задаешь Видовую матрицу для сцены
                            задаешь проекционную матрицу

                            потом говоришь dx чтобы нарисовал твой буфер и он рисуется сразу же на экране сам все вычисляет и ставит точки туда куда надо.
                              Дак вот мне надо узнать куда он поставил эту точку на экране
                                ну тогда самому вычислять
                                  Цитата olegber1 @
                                  Получается мне нужно самому каждый раз вычислять 3d координаты, загонять их в вершинный буфер, прорисовывать примитив,потом на основе этих 3d координат вычислять координаты на экране?

                                  Т.е. таким образом
                                    Цитата olegber1 @
                                    Т.е. таким образом

                                    да

                                    только не мог бы ты поделиться, зачем тебе это надо?
                                      Вообще задача стоит следующая:следующая кубик(36 вершин) двигается по экрану(Это реализовано Вычисляет всё direct3d).
                                      Нужно выводить координаты его вершин.Кубиков может быть 10 штук(соответственно 36 вершин).

                                      Добавлено
                                      Ну выводить нужно само сабой 4 вершины у каждого кубика
                                        Цитата olegber1 @
                                        Нужно выводить координаты его вершин

                                        Экранных?
                                          Экранных
                                            olegber1
                                            ну удачи
                                              Спасибо, буду искать дальше
                                                Цитата olegber1 @
                                                кубик(36 вершин)


                                                Это сколькомерный кубик-то? :blink:
                                                  Цитата barazuk @
                                                  Это сколькомерный кубик-то

                                                  если с текстурами и нормалями то как раз
                                                    Ещё такой вопрос как бы Вы решили эту задачу?
                                                      XandoX

                                                      ну так бы и решили


                                                      тока почему
                                                      Цитата olegber1 @
                                                      Ну выводить нужно само сабой 4 вершины у каждого кубика
                                                        Опечатался, конечно координаты 8 вершин,которые лежат на углах кубика
                                                          а можно как-нибудь для решения этой проблемы использовать буфер IDirect3DDevice8::ProcessVertices?
                                                            olegber1
                                                            да

                                                            незнал про эту функцию
                                                              Вот только как интересно?
                                                              Кто-нибудь мог бы подсказать примерный порядок действий.
                                                                создаешь свой кубик
                                                                устанавливаешь матрицы
                                                                создаешь доп буфер пока пустой с нужным тебе FVF
                                                                устанавливаешь буфер кубика в поток
                                                                вызываешь эту функцию
                                                                и там у тебя то что нужно
                                                                только в SDK написано что если вершина не попала в фрустум то она сохраниться только в проекционном виде. и все.
                                                                  спасибо
                                                                    Ничего не получается. Не могли бы Вы выложить часть кода (на delphi,c)?
                                                                      olegber1
                                                                      лучше сам выложи, что у тебя получилось
                                                                        Цитата XandoX @
                                                                        что у тебя получилось

                                                                        Цитата olegber1 @
                                                                        Ничего


                                                                        Или всё-таки хоть что-то?
                                                                          Всё работает как написано в SDK.Спасибо за помощь.
                                                                          1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                                                          0 пользователей:


                                                                          Рейтинг@Mail.ru
                                                                          [ Script execution time: 0,0653 ]   [ 14 queries used ]   [ Generated: 18.07.25, 03:22 GMT ]