Я работаю с сетчатыми материалами и хотел бы иметь возможность получить их по идентификатору, не используя индекс массива.Я не нашел ничего общего с другими структурами данных, поэтому, если бы кто-нибудь мог указать мне правильное направление, это было бы замечательно, особенно в отношении карт типов c ++.
Причина, по которой мне нужно, чтобы материал читался в шейдере с идентификатором материала, заключается в том, что я выполняю отложенный рендеринг и стараюсь не посылать текстуру для зеркальных, рассеянных и рассеянных цветов.Вместо этого я сохраняю идентификатор материала в альфа моей обычной текстуры и использую этот идентификатор, чтобы найти, какой материал должен использовать каждый фрагмент в расчете освещения Фонга.Проблема в том, что мне нужно пройтись по массиву материалов, чтобы проверить, совпадает ли идентификатор материала из массива с идентификатором материала из обычной текстуры, что не идеально.Я подумал, что если бы я мог сделать идентификатор материала ключом, необходимым для доступа к данным, это было бы немного более эффективно, поскольку мне не понадобился бы цикл, просто поиск.Я мог бы передать все материалы в правильном порядке и отправить их в свою программу освещения, но это означало бы, что я передаю в большем массиве, потому что есть 29 уникальных мешей, которые повторно используют материалы из массива из 7 материалов.Так что это означало бы, что я отправлю не менее 29 материалов вместо 7 *.