Рисование геометрии в opengl

Взятие стандартных функций opengl 4.0+ & технические характеристики во внимание; я видел, что геометрии и формы могут быть созданы двумя способами:

  1. используя ВАО & VBO s.

  2. используя шейдерные программы.

какой из них является стандартным способом создания фигур? они соответствуют друг другу? или это два разных способа создания геометрии и фигур?

3

Решение

Геометрия загружается в GPU с помощью VAO & ВБО.

Я настоятельно (очень сильно) рекомендую вам прочитать это http://fgiesen.wordpress.com/2011/07/09/a-trip-through-the-graphics-pipeline-2011-index/

4

Другие решения

VAO и VBO как насчет того, какую геометрию рисовать (указав данные для каждой вершины). Шейдерные программы рассказывают о том, как их рисовать (какая программа применяется к каждой предоставленной вершине, каждому фрагменту и т. Д.).

4

Давайте выложим полные факты.

Шейдеры нуждаются в вводе. Без входных данных, которые меняются, каждый вызов шейдера будет давать точно такие же значения. Вот как работают шейдеры. Когда вы выполняете вызов отрисовки, запускается несколько вызовов шейдеров. только переменные который изменится от вызова к вызову в этом вызове отрисовки in переменные. Поэтому, если вы не используете какой-либо тип ввода, каждый шейдер будет выдавать одинаковые результаты.

тем не мение, это не означает, что вам абсолютно необходим VAO, который на самом деле содержит вещи. Это совершенно законно (хотя есть некоторые драйверы, которые не поддерживают его) для рендеринга с VAO, который не имеет любой атрибуты включены (хотя вы должны использовать рендеринг массива, а не индексированный рендеринг). В этом случае все пользовательские входные данные для вершинного шейдера (если есть) будут заполнены с контекстным состоянием, который будет постоянным.

Вершинный шейдер имеет некоторые другие встроенные входы для каждой вершины, сгенерированные системой. А именно gl_VertexID. Это индекс, используемый OpenGL для уникальной идентификации этой конкретной вершины. Это будет отличаться для каждой вершины.

Таким образом, вы можете, например, извлекать данные геометрии самостоятельно на основе этого индекса с помощью унифицированных буферов, текстур буфера или другого механизма. Или вы можете процедурно генерировать данные вершин на основе индекса. Или что-то другое. Вы можете передать эти данные шейдерам тесселяции, чтобы они могли создавать сгенерированные данные. Или с геометрическими шейдерами делать с ними все, что вы хотите. Однако вы хотите превратить этот индекс в реальные данные — решать только вам.

Вот пример из моей серии уроков, которая генерирует данные вершин не более чем по индексу.

3

я видел, что геометрии и формы могут быть созданы двумя способами:

Тоже нет. В современном OpenGL-4 вам нужны как данные, так и программы.

VBO и VAO содержат необработанные данные геометрии. Шейдеры — это программы (обычно выполняемые на GPU), которые превращают необработанные данные в пиксели на экране.

2

Вершинные шейдеры можно использовать для смещения вершин или для их генерации из встроенной формулы и индекса вершин, который доступен как встроенный атрибут в более поздних версиях open gl.

Различие между вершинным и геометрическим шейдерами заключается в том, что вершинный шейдер представляет собой отображение 1: 1, в то время как геометрический шейдер может создавать больше вершин — его можно использовать в автоматическом создании уровня детализации, например, например. NURBS или перлин на основе шума местности и т. Д.

1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector