Я добавлю к ответу datenwolf.Я предполагаю, что вам доступен только шейдерный конвейер.
Требования
В OpenGL 4.0+ Opengl не делает для вас никакого рендеринга, поскольку он удаляется отконвейер с фиксированной функцией.Если вы сейчас визуализируете свою геометрию без шейдера, вы используете устаревший конвейер.Начать работу без какой-либо базовой платформы будет сложно (не невозможно, но я бы порекомендовал использовать базовую среду).Для начала я бы порекомендовал использовать GLUT (это создаст окно для вас и будет иметь базовые обратные вызовы для функции ожидания и ввода), GLEW (для настройки контекста рендеринга)и gLTools (матричный стек, универсальные шейдеры и менеджер шейдеров для быстрой настройки, чтобы вы могли хотя бы начать рендеринг).
Настройка
Я дам здесь важные части, которые вы можете затем собрать вместе.На данный момент, я предполагаю, что вы правильно настроили GLUT ( ищите, как его настроить ), и вы можете зарегистрировать цикл обновления с ним и создать окно (то есть цикл, который вызываетодна из выбранных вами функций [примечание, это не может быть методом] для каждого кадра).Обратитесь к ссылке выше для помощи по этому вопросу.
- Сначала инициализируйте glew (вызывая
glewInit()
) - Настройте вашу сцену.Это включает в себя использование класса GLBatch (из glTools) для создания набора вершин для визуализации в виде треугольников и инициализацию класса GLShaderManager (также из GLTools) и его базовых шейдеров путем вызова его
InitializeStockShaders()
function. - В цикле ожидания вызовите функцию
UseStockShader()
диспетчера шейдеров, чтобы запустить новый пакет.Вызовите функцию draw()
в вашем пакете вершин.Для полного обзора glTools, перейдите сюда . - Не забудьте очистить окно перед рендерингом и поменять местами буферы после рендеринга, вызвав
glClear()
и glSwapBuffers()
соответственно.
Обратите внимание, что большинство функций, которые я дал выше, принимают аргументы.Вы должны быть в состоянии понять это, посмотрев документацию соответствующей библиотеки.
MVP Matrix (РЕДАКТИРОВАТЬ: Забыли добавить этот раздел)
OpenGL отображает все, что естьв координатах -1,1, глядя вниз по оси Z.Он не имеет понятия о камере и не заботится о чем-либо, что выходит за рамки этих координат.Матрица модель-вид-проекция - это то, что превращает вашу сцену в подходят эти координаты.
В качестве отправной точки, не беспокойтесь об этом, пока на экране не будет что-то визуализировано (убедитесь, что все координаты, которые вы задаете для вашей вершинной партии, меньше 1).После этого настройте матрицу проекции (проекция по умолчанию - орфографическая), используя класс GLFrustum
в glTools.Из этого класса вы получите матрицу проекции, которую вы умножите на матрицу вида модели.Матрица вида модели представляет собой комбинацию матрицы преобразования модели и преобразования камеры (помните, что камеры нет, поэтому, по сути, вы перемещаете сцену вместо этого).После того, как вы умножили их все на одну матрицу, вы передаете ее шейдеру с помощью функции UseStockShader()
.
Используйте стандартный шейдер в GLTools (например, GLT_SHADER_FLAT
), затем начните создавать свой собственный.
Ссылка
Наконец, я настоятельно рекомендую приобрести эту книгу: OpenGL SuperBible, всеобъемлющее руководство и справочник (пятое издание - убедитесь, что это именно это издание)