Иногда я нахожу много функций, таких как glEnd и многие другие, которые не упомянуты в документации OpenGL 3+.Были ли они заменены другими функциями?
Они были полностью удалены, поскольку их работа плохо отражает то, как современные графические системы работают как на аппаратной, так и на программной стороне.glBegin (…) и glEnd () формируют окружение так называемого непосредственного режима: каждый вызов вызывает операцию.Это отражает то, как были построены ранние графические системы, около 20 лет назад.
Сегодня каждый готовит пакеты данных, передает их в память графического процессора и запускает пакетные чертежи с помощью одного вызова чертежа.OpenGL делает это с помощью массивов вершин и объектов буферов вершин (VBO).Массивы вершин существуют с OpenGL-1.1 (1996), и API VBO основан на массивах вершин, поэтому для любой разумной программы поддержка VBO была легко добавлена.
Или я должен написать ихвручную?Есть ли онлайн-учебник, в котором используется OpenGL 3 +?
Это зависит от рассматриваемой функции.Например всю текстуру среды, объединители были удалены.Так же, как функции манипулирования матрицей и весь интерфейс освещения.
То, что они сделали и настроили, теперь делается с помощью шейдеров и униформ.Так как от вас ожидают поставки шейдеров, можно сказать, что вы сами это реализуете.OTOH, вы быстро обнаружите, что часто писать шейдер проще и лаконичнее, чем возиться с большим количеством вызовов установки параметров OpenGL.Также, как только вы продвинетесь достаточно далеко, вы вряд ли пропустите функции манипулирования матрицей.Каждое серьезное приложение, имеющее дело с трехмерной графикой, поддерживает матрицы преобразования;будь то для повышения гибкости или просто потому, что эти матрицы требуются и в других местах, например, некоторые физические симуляции.
Что касается "gluPerspective", я читал, что он не используется в Opengl 3+,Разве это не должно быть отдельной функцией в GLUT?какое это имеет отношение к OpenGL 3+?Последнее, что делает Transform (Width, Height);делать?(Я нашел его в некотором примере загруженного мной кода, и не могу найти его в GLUT или OpenGL).
gluPerspective является частью GLU.GLU - это сопутствующая библиотека функций OpenGL Utility, которая использовалась в комплекте с OpenGL-1.1.Однако это не является частью спецификации OpenGL и является полностью необязательным.
GLUT - это нечто другое.Это упрощенная структура для быстрой и грязной настройки окна и контекста OpenGL, предлагающая некоторый минималистичный API ввода.Также он больше не поддерживается.Лично я рекомендую не использовать его.Если вы должны использовать GLUT API, используйте FreeGLUT.Или, что еще лучше, не используйте GLUT, используйте инструментарий, такой как Qt, GTK, или фреймворк, такой как GLFW или SDL.