Показать сообщение отдельно
Старый 02.04.2014, 11:25   #229
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: Пишем 3D движок - замену Xors3D

Сообщение от 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;
} 
(Offline)
 
Ответить с цитированием