Сообщение от bugway
Кто делал фабрику мешей, поделитесь соображениями - как это лучше связать с буфером/буферами вертексов?
|
Мое предложение. Каждый меш хранит один буффер с вершинами и буффер с индексами. Затем Список Поверхностей их индекс начала, конца и указатель на материал.
При отрисовке биндим оба буффера, и циклом бежим по поверхностям рисую диапазоны индексов. Все.
// псевдокод
template <typename T>
class Buffer {
}
struct Surface {
std::pair<int, int> range;
Material *material;
}
class Mesh {
public:
void render() {
bindVertexBuffer(m_vertexBuffer);
bindIndexBuffer(m_indicesBuffer);
bindShader(); // устанавливает настройки меша в шейдер
for (const Surface &surface : m_surfaces)
renderSurface(surface); // устанавливает настройки поверхности в шейдер - рисует
}
private:
std::vector<Surface> m_surfaces;
Buffer<Vertex> m_vertexBuffer;
Buffer<int> m_indexBuffer;
}