1229 / 596 / 74
Регистрация: 01.10.2012
Сообщений: 2,844
|
|
1 | |
GlVertexAttribPointer - как различить вершины, координаты, нормали, цвета12.09.2016, 09:17. Просмотров 793. Ответов 5
Метки нет Все метки)
(
Здравствуйте
Рефакторю старый OpenGL код, и появились квешнзы 1) glVertexPointer, glTexCoordPointer, glNormalPointer, glColorPointer - как я понял это сейчас obsolete/deprecated (хотя код работает). Сейчас грамотно/современно использовать glVertexAttribPointer и связанные с ним вызова API 2) Ну ладно, надо glVertexAttribPointer - так надо. Но меня смутило что нигде нет (или я не нашел) "чему" соответствует атрибут. Т.е. зарядив glVertexAttribPointer нигде не указывается "а что это" (напр вертексы или нормали или UV). Выходит это сейчас решается в самом вертексном шейдере? Верно ли я понял? С уважением Игорь
0
|
|
12.09.2016, 09:17 | |
Куб - вершины, нормали, текстуры - как задать
Пусть даны координаты трех вершин прямоугольника. Определить координаты четвертой вершины |
|
12.09.2016, 11:05 | 2 | |||||
Igor3D, на сколько я знаю, в OpenGL 3.3 и выше в режиме core profile(без совместимости со старыми версиями) в шейдерах больше нет gl_Vertex, gl_Normal и прочих build in атрибут. Соответственно ф-ии glVertexPointer и прочии бесполезны.
Вместо этого программист сам определяет названия и смысл переданных атрибут. Надо лишь указать index/location к которому необходимо привязать VBO. Этот индекс можно получить через glGetAttribLocation. Либо явно прописать в шейдере:
Так же существует ещё один способ "индексации атрибут" перед линковкой программы самому прописать в коде индексы через glBindAttribLocation. https://www.youtube.com/watch?v=mL6BvXVtd9Y
0
|
1229 / 596 / 74
Регистрация: 01.10.2012
Сообщений: 2,844
|
|||||||||||
12.09.2016, 11:47 [ТС] | 3 | ||||||||||
А как определяется смысл? Например
0
|
12.09.2016, 11:59 | 4 |
Да, можно и так. Только кто кроме вас потом поймёт этот код? Да и сами наверное забудете через месяцок, что там и как. Особенно если кода не пару строк.
Добавлено через 1 минуту Если хотите стать незаменимым программистом, то названия без смысла - отличный способ. Главное самому потом на эти грабли не наступить
0
|
22 / 24 / 2
Регистрация: 04.08.2015
Сообщений: 590
|
|
12.09.2016, 18:08 | 5 |
Суть шейдеров в том что вы сами решаете как должны использоваться позиционные данные, как цветовые, а как текстурные. Да, вы можете написать что вместо позиционных данных будут использоваться данные цвета, и результатом будет позиция в пределах от 0 до 1 в координатах openGL.
Как уже здесь ранее писалось, мостом соединяющим шейдер и массивы вершинных атрибутов служит location в шейдере и первая переменная функции glVertexAttribPointer(). То есть первая переменная функции glVertexAttribPointer() говорит в какой области хранить данные массивов, а location шейдера определяет из какой области эти данные получать. Различие вершин цвета, нормалей, и позиционных данных, в их назначении и следовательно в использовании. А как они будут использоваться вы задаете сами в шейдере.
0
|
1229 / 596 / 74
Регистрация: 01.10.2012
Сообщений: 2,844
|
|
13.09.2016, 11:32 [ТС] | 6 |
Ага, значит понял верно. Спасибо
Глупые примеры запоминаются гораздо легче ![]()
0
|
13.09.2016, 11:32 | |
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь. Заданы координаты трех вершин прямоугольника. Необходимо определить координаты четвертой вершины Заданы координаты трех вершин прямоугольника, необходимо определить координаты четвертой вершины Пусть даны координаты трех вершин прямоугольника. Определите координаты четвертой вершины Найти координаты всех вершин параллелограмма, если известны координаты одной вершины и уравнения двух его сторон Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |