Итак, я хочу нарисовать много квадратов (или даже кубов) и наткнулся на эту прекрасную вещь, называемую геометрическим шейдером.
Теперь я понимаю, как это работает, и я, вероятно, мог бы манипулировать им, чтобы нарисовать куб для каждой вершины в буфере вершин, но я не уверен, что это правильный способ сделать это. Геометрический шейдер происходит между вершинным шейдером и фрагментным шейдером, поэтому он работает с вершинами в экранном пространстве . Но они нужны мне в мировом пространстве, чтобы делать преобразования.
Итак, нормально ли, чтобы мой вершинный шейдер просто передавал входные данные в геометрический шейдер, а геометрический шейдер умножался на матрицу modelviewproj после создания примитивов? Не должно быть никаких проблем с унифицированной архитектурой шейдеров, но я все еще чувствую тошноту, когда делаю вершинный шейдер избыточным.
Есть ли альтернативы? Или это действительно «правильный» способ сделать это?