Какие функции OpenGL изменяют положения вершин до вершинного шейдера? - PullRequest
1 голос
/ 21 мая 2019

Скажем, есть цветная рендеринг текстура шириной 1000 пикселей и высотой 500 пикселей. И я рисую четырехугольник с вершинами в четырех углах (-1, -1, 0), (1, -1, 0), (-1, 1, 0), (1, 1, 0) к нему без каких-либо преобразований в вершинном шейдере.

Будет ли это по умолчанию охватывать всю поверхность текстуры, если не вызывать другие функции GL до этой единственной команды рисования?

Какие функции OpenGL (которые изменяют положения вершин) могут заставить этот квад больше не заполнять экран?

(я пытаюсь понять, как можно смешивать вершины до вершинного шейдера, поэтому я могу избегать или использовать правильные функции, чтобы всегда отображать их так, чтобы NDC (-1, -1) - (1, 1) представляла всю поверхность).

edit: Если позиции не изменены, мне также интересно, как их отображение в буфер рендеринга можно было изменить до вершинного шейдера. Например, (-1, -1, 0) будет надежно ссылаться на фрагмент в левом нижнем углу буфера рендеринга, (0, 0, 0) в середину и (1, 1, 0) в верхний правый угол?

1 Ответ

3 голосов
/ 22 мая 2019

Ничего не происходит с данными вершин "до вершинного шейдера".С этим ничего не может случиться, потому что OpenGL не знает, что атрибуты вершины означают .Он не знает, на что ссылается атрибут 2;он не знает, что такое позиция, нормаль, координата текстуры или что-то еще.Что касается OpenGL, то это всего лишь данные.Что придает этим данным смысл, так это ваш вершинный шейдер.И только способом, определенным вашим вершинным шейдером.

Данные из буферных объектов читаются в соответствии с форматом, заданным вашим VAO, и передаются вызовам вершинного шейдера, которые обрабатывают эти вершины.

...