DirectX 9 доступ к вершинам объекта
Столь долгое время прошло после моего перерыва в программировании игр да и вообще программирования.
Вот решил взяться. И опять нашел, в принципе как всегда, для себя проблему, банальную. Как получить доступ к вершинам сетки объекта что бы с ними можно было производить расчеты? PS В основном это нужно для определения столкновения игрока с миром. Если кто-то знает еще сам алгоритм определения столкновения, то расскажите мне про него по подробнее. |
Ответ: DirectX 9 доступ к вершинам объекта
храни отдельно, чтобы быстро достучаться, а так lock unlock, так же как и создание.
|
Ответ: DirectX 9 доступ к вершинам объекта
Суть в том что когда я загружаю x-mesh мне надо каким-то образом поместить информацию(x,y,z,n - к примеру) о вершинах, треугольниках в массив, чтобы в дальнейшем эту информацию использовать для определения столкновений. Приведите пример команды или определенного алгоритма через который можно загрузить инф. о верш. в массив. Добавлено: Как я могу работать с вершинами объекта(перемещение и др.)? |
Ответ: DirectX 9 доступ к вершинам объекта
перемещается мировая матрица а не вершины объекта! Думаю стоит не сэмплы смотреть, а почитать умную книжку, и все встанет на свои места.
Код:
IDirect3DVertexBuffer9* vb = 0; Код:
D3DXMATRIX cObject::GetTransformMatrix() а вообще почитай http://www.netlib.narod.ru/library/book0032/ch10_01.htm книга супер, сам читал |
Ответ: DirectX 9 доступ к вершинам объекта
Матрицы я знаю. Мне надо тупо знать координаты каждой вершины. Это возможно.
Если я хочу к примеру сравнить: if (vertex1<vertex2){collision=1;}; мне надо знать значение/координаты этих вершин. 1)Как скажем мне в переменную занести информацию о вершине? 2)Как изменить координаты одной любой вершины. Напишите пример если не трудно. Пока не хочу использовать сторонние библиотеки такие как bullet,wrapper etc. Хочу написать свою физику примитивную.Глядишь и получится |
Ответ: DirectX 9 доступ к вершинам объекта
Код:
IDirect3DVertexBuffer9* vb = 0; пример Код:
Vertex* vertices; |
Ответ: DirectX 9 доступ к вершинам объекта
Я так понял ты работаешь, в данном примере, с временным буфером вершин(vb) и изменяешь его значения, а как потом их применить буферу моей модели?
|
Ответ: DirectX 9 доступ к вершинам объекта
Это не временный буфер, а фактически буфер из видео карты, изменяя его изменится и изображение.
|
Ответ: DirectX 9 доступ к вершинам объекта
Код:
struct Vertex Нашел другой способ изменения координат вершин: Код:
vb1->Lock(0, 0,(void**)&vertices, 0); // заблокировать весь буфер 1) Как можно считать информацию о вершинах? 2) Как я заметил каждая вершина имеет свою сист. координат. Почему. Как это исправить? |
Ответ: DirectX 9 доступ к вершинам объекта
Код:
struct Vertex |
Ответ: DirectX 9 доступ к вершинам объекта
Так получилось. А что ты конкретно сделал, а то я уже подзабыл что это значит?
ЗЫ: 1) Как можно считать информацию о вершинах? 2) Как я заметил каждая вершина имеет свою сист. координат. Почему. Как это исправить? |
Ответ: DirectX 9 доступ к вершинам объекта
Цитата:
Код:
struct Vertex |
Ответ: DirectX 9 доступ к вершинам объекта
попробуй так
Код:
LPD3DXMESH MeshTemp ; и работай уже с MeshTemp код не проверял но идея такова |
Ответ: DirectX 9 доступ к вершинам объекта
Цитата:
|
Ответ: DirectX 9 доступ к вершинам объекта
Объясняю. Вершины не меняются, если ты просто хочешь передвигать, вращать, масштабировать объект. Меняется мировая матрица.
Например куб, имеет 8 вершин, описаны позиции в диапазонах от -1, до 1 по xyz. Я хочу вывести 3 куба в разных положениях. Я не меняю вершины этого куба, я перед отрисовкой каждого поставляю матрицу. У первого у меня будет d3dxmatrixtranslate одно , у второго другое у третьего третье. Заметь к вершинам я и не прикасался |
Часовой пояс GMT +4, время: 15:10. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot