А как насчет NURBS и ядра opengl 4.2?
Глава NURBS в RedBook считается устаревшей, включая служебную библиотеку: "Несмотря на то, что некоторые из этих функций являются частью библиотеки GLU, они опираются на функциональность, которая была удалена из базовой библиотеки OpenGL".
Означает ли это, что в OpenGL 4.2 фактически отсутствует инструментарий C++ для манипулирования кривыми и поверхностями NURBS? Есть некоторые коммерческие наборы инструментов сторонних производителей, но они не кроссплатформенные (в основном Windows)
...?
2 ответа
В OpenGL-3 и более поздних версиях у вас есть геометрия и вершинные шейдеры, в OpenGL-4 даже предусмотрены тесселяционные шейдеры. Они предлагают все для реализации сплайнов и поверхностей NURBS и Bezier с GPU-ускорением. Оценщики OpenGL-1.1 никогда не были ускорены GPU на большинстве аппаратных средств. Так что на самом деле вам лучше без них.
Просто внедрите в шейдеры оценщики NURBS или Bezier и отправьте вершины в качестве точек выборки поверхности.
Что касается вашего вопроса, касающегося Красной книги, библиотека GLU не была официально осуждена ARB OpenGL, а просто проигнорирована. Однако GLU использовал функции, которые устарели в OpenGL 3.0 и удалены в OpenGL 3.1: рендеринг в непосредственном режиме, списки отображения, матричные стеки и многие другие. Специфично для NURBS, они использовали некоторые из этих функций (предполагая, что библиотека GLU, связанная с вашей реализацией OpenGL, основана на версии GLU SGI, которая была большей частью), и поэтому функции просто не будут работать в основном контексте. Это не недостаток библиотеки GLU на основе C++, поскольку GLU использует функции, удаленные из современного OpenGL.
@datenwolf - не совсем. Библиотека GLU NURBS поддерживает кривые обрезки, которые сложно реализовать во всех случаях с использованием конвейера вершинных шейдеров OpenGL (т. Е. Только для вершин, тесселяции и затенения геометрии). В частности, поддержка правил намотки и правильной обрезки при соблюдении пересечений с кривыми уравновешивания довольно жесткая (это может быть возможно при комбинации вычислительных шейдеров и причудливой работы в фрагментном шейдере). Вы можете взломать обрезку, используя альфа-текстуру, но вы получите результаты, связанные с наложением, но это быстрое решение.