Im в настоящее время реализует проект Octree для моего бакалавриата. Моего Octree принимает зЬй :: вектора в качестве аргумента:Вершины магазинов DirectX C++
octree::Octree::Octree(std::vector<const D3DXVECTOR3*> vec) :
m_vertices(std::vector<D3DXVECTOR3*>()),
m_size(m_vertices.size())
{
int i=0;
for(;i<m_size;++i) {
m_vertices.push_back(new D3DXVECTOR3(*vec.at(i)));
}
}
Im просит за то, что, как правило, используются для хранения вершин перед визуализацией их и сделать любой тест забоя и т.д., чтобы им.
Я сохранил это очень просто, теперь у меня есть функция, которая отображает сетку. Некоторые фрагменты:
#define GRIDFVF (D3DFVF_XYZ | D3DFVF_DIFFUSE)
struct GridVertex {
D3DXVECTOR3 position;
DWORD color;
};
g_dev->SetTransform(D3DTS_WORLD, &matIdentity);
g_dev->SetStreamSource(0, g_buffer, 0, sizeof(GridVertex));
g_dev->SetTexture(0, NULL);
g_dev->DrawPrimitive(D3DPT_LINELIST, 0, GridSize * 4 + 2);
Теперь при визуализации этого я использую мой пользовательских STRUCT GridVertex, то будет экономит D3DXVECTOR9 для поз и DWORD для значения цвета и скажите GPU, установив гибкий формат вершин в GRIDFVF. Но в моем Octree я хочу только сохранить позиции для выполнения теста, если определенные вершины находятся внутри узлов в пределах моего Octree и так далее. Поэтому я подумал о создании другого класса SceneManager и сохранении всех значений в std :: vector и, наконец, передать его моему классу Octree, который выполняет тест, а затем передает проверенные вершины на графический процессор. Будет ли это прочное решение или что-то общее для реализации чего-то подобного? Заранее благодарен
Спасибо, Джош, но у меня все еще есть один вопрос: а как насчет больших сущностей? Например, сетка, которая определяет землю мира. Как я могу отделить это от менее сущностей? Поскольку сетка будет охватывать себя по всей октете – Chris
Из-за именно этой причины (и других) не рекомендуется хранить «мир» как единую гигантскую сетку; разбить его на более мелкие куски, которые можно отбросить по мере необходимости. –