В новых модных версиях OpenGL (3.0 и 4.0 и выше) встроенные атрибуты вершин , такие как gl_Vertex, устарели .«Новый способ» для рендеринга чего-либо - это указать свои собственные атрибуты вершин для позиции, цвета и т. Д., А затем связать эти пользовательские атрибуты с буферами.
Мой вопрос заключается в следующем: как это можно сделать безтесно связывает код рендеринга и шейдер?Если я пишу шейдер, который использует «положение» в качестве позиции вершины, то хост-код, использующий шейдер, должен это знать и передавать данные вершины как «положение».Если я хочу использовать другой шейдер, который был написан для получения данных вершин в "vertex_pos", я должен либо сначала переписать этот шейдер, либо изменить свой код хоста, чтобы вместо этого отправлять данные вершин как "vertex_pos".
Существует ли набор рекомендуемых имен для стандартных атрибутов вершин и фрагментов, которые должны использовать все шейдеры? Или существуют стандарты Balkanized, специфичные для движка, так что шейдер, написанный для одного движка, не может работать на другом безмодификация?Или вообще нет стандартов, так что, как правило, каждому объекту нужен свой собственный код рендеринга, соответствующий его пользовательскому шейдеру?