Показать сообщение отдельно
Старый 23.12.2011, 13:12   #9
Mind
ПроЭктировщик
 
Аватар для Mind
 
Регистрация: 24.02.2011
Сообщений: 188
Написано 13 полезных сообщений
(для 18 пользователей)
Ответ: DirectX 9 доступ к вершинам объекта

struct Vertex
{
	float x,y,z;
};

IDirect3DVertexBuffer9* vb1 = 0;
Mesh->GetVertexBuffer(&vb1);
Vertex* vertices;
vb1->Lock(0, 0,(void**)&vertices, 0);    // заблокировать весь буфер

vertices[0] = Vertex(-1.0f, 0.0f, 2.0f);  пишет что не может преобразовать из float в Vertex.
vertices[1] = Vertex( 0.0f, 1.0f, 2.0f);  --//--
vertices[2] = Vertex( 1.0f, 0.0f, 2.0f);  --//--

vb1->Unlock();                            //разблокировать буфер
Сделал как ты говорил. Не получается. Возможно я где-то со структурой вершин намудрил. Не пойму.

Нашел другой способ изменения координат вершин:
vb1->Lock(0, 0,(void**)&vertices, 0);    // заблокировать весь буфер

vertices[0].x=10;vertices[0].y=20;vertices[0].z=-5;
vertices[1].x=15;vertices[1].y=30;vertices[1].z=-10;
vertices[2].x=20;vertices[2].y=40;vertices[2].z=-15;

vb1->Unlock();                            //разблокировать буфер
Но есть пару замечаний:
1) Как можно считать информацию о вершинах?
2) Как я заметил каждая вершина имеет свою сист. координат. Почему. Как это исправить?
(Offline)
 
Ответить с цитированием