Показать сообщение отдельно
Старый 20.12.2011, 21:38   #4
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: DirectX 9 доступ к вершинам объекта

перемещается мировая матрица а не вершины объекта! Думаю стоит не сэмплы смотреть, а почитать умную книжку, и все встанет на свои места.
IDirect3DVertexBuffer9* vb = 0;
Mesh->GetVertexBuffer(&vb);
потом делать буферу lock, тебе нужно будет вытаскивать в структуру FVF, ее тоже из D3DXMESH можно получить
IDirect3DIndexBuffer9* ib = 0;
Mesh->GetIndexBuffer(&ib);
по перемещениям
D3DXMATRIX cObject::GetTransformMatrix()
{
	D3DXMATRIX pos,rx,ry,rz,scal;
	D3DXMatrixScaling(&scal,scale[0],scale[1],scale[2]);
	//D3DXMatrixRotationYawPitchRoll(&pos,rotation[1],rotation[0],rotation[2]);
	D3DXMatrixRotationX(&rx,utils::RadToDeg(rotation[0]));
	D3DXMatrixRotationY(&ry,utils::RadToDeg(rotation[1]));
	D3DXMatrixRotationZ(&rz, utils::RadToDeg(rotation[2]));
	D3DXMatrixTranslation(&pos,position[0],position[1],position[2]);
	return scal * rx * ry * rz * pos;
}
void cObject::SetWorldMatrix()
{
	D3DXMATRIX mat = GetTransformMatrix();//получаем матрицу тек объекта
	pDevice->SetTransform(D3DTS_WORLD, &mat);		//делаем текущей
}
Для колизий используй bullet кпримеру.
а вообще почитай http://www.netlib.narod.ru/library/book0032/ch10_01.htm книга супер, сам читал
(Offline)
 
Ответить с цитированием