Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Bounding Box

6.5K
13 декабря 2005 года
a.k.a Throne
39 / / 07.08.2005
Как получить координаты вершин Bounding Box-а из Mesh(ID3DXMesh)?
15K
14 декабря 2005 года
BlueHER
5 / / 14.12.2005
Цитата:
Originally posted by a.k.a Throne
Как получить координаты вершин Bounding Box-а из Mesh(ID3DXMesh)?


Дано: g_pMesh - твой меш,
MAX и MIN - точки бокса
NumVertices - число вершин в меше (можно определить из
ID3DXMesh).
Примечание: не годится делать так каждый кадр, надо сделать на этапе инициализации / загрузки меша. А то локить буфер для таких пустяков - несколько расточительно.

Код:
if SUCCEEDED(g_pMesh->LockVertexBuffer(D3DLOCK_NOSYSLOCK,(void**)&buffer))
    {
        for(DWORD loop  =   0; loop < NumVertices; loop++)
                {
            MAX.x=( ((D3DXVECTOR3*)(buffer+loop*SizeVert))->x > MAX.x)?(((D3DXVECTOR3*)(buffer+loop*SizeVert))->x):MAX.x;
            MIN.x=( ((D3DXVECTOR3*)(buffer+loop*SizeVert))->x < MIN.x)?(((D3DXVECTOR3*)(buffer+loop*SizeVert))->x):MIN.x;
            MAX.y=( ((D3DXVECTOR3*)(buffer+loop*SizeVert))->y > MAX.y)?(((D3DXVECTOR3*)(buffer+loop*SizeVert))->y):MAX.y;
            MIN.y=( ((D3DXVECTOR3*)(buffer+loop*SizeVert))->y < MIN.y)?(((D3DXVECTOR3*)(buffer+loop*SizeVert))->y):MIN.y;
            MAX.z=( ((D3DXVECTOR3*)(buffer+loop*SizeVert))->z > MAX.z)?(((D3DXVECTOR3*)(buffer+loop*SizeVert))->z):MAX.z;
            MIN.z=( ((D3DXVECTOR3*)(buffer+loop*SizeVert))->z < MIN.z)?(((D3DXVECTOR3*)(buffer+loop*SizeVert))->z):MIN.z;
           
        }//Цикл по вершинам
        g_pMesh->UnlockVertexBuffer();
    }//Если удалось заблокировать буфер вершин
6.5K
15 декабря 2005 года
a.k.a Throne
39 / / 07.08.2005
Нельзя на паскалеЯ? А то С++ не понимаю
15K
18 декабря 2005 года
BlueHER
5 / / 14.12.2005
Цитата:
Originally posted by a.k.a Throne
Нельзя на паскалеЯ? А то С++ не понимаю


Какая разница, Pascal, С...
Смысл такой:
-блокируешь буфер вершин своего меша
-по всем вершинам ищешь MAX и MIN координаты для x,y и z.
Это и будут границы бокса.

6.5K
18 декабря 2005 года
a.k.a Throne
39 / / 07.08.2005
Вообщето мне уже не нужен bounding box, мне надо получить координаты вершин и размер структуры. Как получить второе?
15K
18 декабря 2005 года
BlueHER
5 / / 14.12.2005
Цитата:
Originally posted by a.k.a Throne
Вообщето мне уже не нужен bounding box, мне надо получить координаты вершин и размер структуры. Как получить второе?


Методы интерфейса ID3DXMesh (оба без параметров):
GetNumBytesPerVertex.
Возвращает размер структуры под каждую вершину.
GetNumVertices - возвращает количество вершин.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог