Название: Полигоны и Материал Отправлено: Igors от Октябрь 17, 2015, 15:28 Добрый день
Возникла необходимость рисовать разные полигоны с разными материалами и текстурами. Т.е. теперь полигон имеет ID которое определяет материал. Сейчас все банально, объект имеет - вектор полигонов - вектор вертексов (позиции) - доп вектора для вертексов (нормали, UV(s), цвет) На это конечно навешено VBO (для каждого контейнера). Кроме того рисование может на лету создавать вертексы/полигоны на основании имеющихся Вот думаю как изменить эту структуру данных для "мульти-материалов". По существу вопрос чисто "архитектурный" (эх, все равно испугаются "VBO"). Что посоветуете? Спасибо Название: Re: Полигоны и Материал Отправлено: Igors от Октябрь 18, 2015, 17:51 Ах как часто мелькает что-то типа "надо изменить архитектуру приложения". Но вот когда ее действительно надо менять - так тихо :)
Представим простейшее рисование с вызовом glDrawElements. Тут проблем нет - установили первый материал - отрисовали принадлежащие ему полигоны - установили второй материал и.т.д Получается надо всего лишь иметь N контейнеров полигонов (по одному для каждого материала). А все данные вертексов остаются неизменными. Ну, естественно, это не проходит. Нужно поддерживать с десяток режимов рисования, а изложенное выше применимо только к парочке из них. Вот хотя бы первый режим "рисовать точки". Тут никаких полигонов не юзается, просто glDrawArrays для вертексов. А теперь выясняется надо-то рисовать не все вертексы, а лишь принадлежащие полигонам с текущим материалом. Следующий режим "рисовать силуэт" - и опять он без полигонов, используются "ребра". И.т.д. В общем, в очередной раз наша оборона не выдержала ударов немецких танковых клиньев :'( Да, для тех кто далек от OpenGL: для простоты "материал" - просто "цвет", напр одни полигоны красные, др зеленые. В данном случае без разницы что в действительности там сотня параметров. Тут можно покалякать типа: "вот видите - архитектура не была тщательно продумана! Если бы с самого начала эта возможность была бы учтена...". Не верю. Что-то написать "про запас" нормально, но никто не будет писать то чего пока нет, а может и вообще неизвестно - но вот оно появляется... |