d3dx.CreateMeshFVF

Работа с 2D и 3D графикой, видео, звуком.

Модератор: Mikle

Vovik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 643
Зарегистрирован: 02.08.2003 (Сб) 15:14
Откуда: Belarus, Minsk

d3dx.CreateMeshFVF

Сообщение Vovik » 06.02.2011 (Вс) 22:47

Кто-нть пользовался этой бякой? Допустим я создаю меш
Код: Выделить всё
Set Mesh = d3dx.CreateMeshFVF(3, 1, D3DPOOL_MANAGED, D3DFVF_XYZ Or D3DFVF_NORMAL, d3dDevice)
А как туда запихнуть вершинный и индексный буфера?

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: d3dx.CreateMeshFVF

Сообщение FireFenix » 07.02.2011 (Пн) 0:06

Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Dakovalev1
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 154
Зарегистрирован: 23.02.2010 (Вт) 14:16

Re: d3dx.CreateMeshFVF

Сообщение Dakovalev1 » 07.02.2011 (Пн) 0:55

Ну как? Блокируешь буфер вершин, и записываешь туда свои вершины.
Код: Выделить всё
mesh->lockvertexbuffer.....

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4147
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: d3dx.CreateMeshFVF

Сообщение Mikle » 07.02.2011 (Пн) 9:43

Vovik писал(а):как туда запихнуть вершинный и индексный буфера

У тебя какие-то странные параметры. Первый параметр - кол-во треугольников, у тебя 3, второй - кол-во вертексов, у тебя 1 :shock:
То есть ты СРАЗУ создаёшь меш нужного объёма, например у куба с нормалями будет 24 вертекса и 12 треугольников, число индексов всегда в 3 раза больше, чем треугольников, для куба - 36.
Дальше берут из меша уже готовые пустые буферы с помощью:
Код: Выделить всё
  Mesh.GetIndexBuffer
  Mesh.GetVertexBuffer
и запихивают туда данные с помощью
Код: Выделить всё
  vb.SetPrivateData
  ib.SetPrivateData

Vovik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 643
Зарегистрирован: 02.08.2003 (Сб) 15:14
Откуда: Belarus, Minsk

Re: d3dx.CreateMeshFVF

Сообщение Vovik » 07.02.2011 (Пн) 11:34

Mikle писал(а):
Vovik писал(а):как туда запихнуть вершинный и индексный буфера

У тебя какие-то странные параметры. Первый параметр - кол-во треугольников, у тебя 3, второй - кол-во вертексов, у тебя 1 :shock:
То есть ты СРАЗУ создаёшь меш нужного объёма, например у куба с нормалями будет 24 вертекса и 12 треугольников, число индексов всегда в 3 раза больше, чем треугольников, для куба - 36.
Дальше берут из меша уже готовые пустые буферы с помощью:
Код: Выделить всё
  Mesh.GetIndexBuffer
  Mesh.GetVertexBuffer
и запихивают туда данные с помощью
Код: Выделить всё
  vb.SetPrivateData
  ib.SetPrivateData

Спасибо, Майкл. Писал по памяти... поэтому и перепутал очередность параметров... :oops:

Vovik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 643
Зарегистрирован: 02.08.2003 (Сб) 15:14
Откуда: Belarus, Minsk

Re: d3dx.CreateMeshFVF

Сообщение Vovik » 15.02.2011 (Вт) 22:34

Что за первый параметр в SetPrivateData? Может так проканает? :roll:
Код: Выделить всё
Set Mesh = d3dx.CreateMeshFVF(1, 3, D3DPOOL_MANAGED, D3DFVF_XYZ Or D3DFVF_NORMAL, d3dDevice)
Set iBuf = Mesh.GetIndexBuffer
Set vBuf = Mesh.GetVertexBuffer

ReDim Ind(2)
ReDim Vert(2)

Ind(0) = 0
Ind(1) = 1
Ind(2) = 2

Vert(0).Pos.x = -0.5
Vert(0).Pos.y = -0.5

Vert(1).Pos.x = -0.5
Vert(1).Pos.y = 0.5

Vert(2).Pos.x = 0.5
Vert(2).Pos.y = -0.5

D3DVertexBuffer8SetData vBuf, 0, Len(Vert(0)) * 3, 0, Vert(0)
D3DIndexBuffer8SetData iBuf, 0, Len(Ind(0)) * 3, 0, Ind(0)

Dakovalev1
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 154
Зарегистрирован: 23.02.2010 (Вт) 14:16

Re: d3dx.CreateMeshFVF

Сообщение Dakovalev1 » 16.02.2011 (Ср) 14:54

я вообще всегда считал, что надо блокировать буфер, чтоб туда пихать что-то.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4147
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: d3dx.CreateMeshFVF

Сообщение Mikle » 16.02.2011 (Ср) 15:00

Vovik , Dakovalev1, смотрите в книге главы 18 и 19, есть D3DVertexBuffer8SetData, Lock не требуется.

Dakovalev1
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 154
Зарегистрирован: 23.02.2010 (Вт) 14:16

Re: d3dx.CreateMeshFVF

Сообщение Dakovalev1 » 16.02.2011 (Ср) 15:31

Угу.


Вернуться в Мультимедиа

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6

    TopList