Войти
ПрограммированиеФорумГрафика

индексы GL ssbo + direct state access

#0
5:24, 8 ноя. 2018

Сразу к делу.  Не могу понять почему ломается геометрия. Явно я где-то косячу и\или чего-то не понимаю.
Короче простой квадрат с текстурой выводится правильно, и всё ОК. Но более сложный объект, например, куб, ломается геометрия, как будто ошибка в индексах.
Приведу пример шейдеров для квадрата, с кубиком тоже самое только position vec3, а не vec2:

+ Показать

создаю буфер и vao:
+ Показать

в рендере:
+ Показать

А нормально куб выводиться начинает только, если в шейдере прописывать layout(location = 0) in vec3 position; и т.д.
И вот так биндить vao с аттрибутами:
+ Показать

Вопрос, но почему???? Почему ssbo ломает геометрию???


#1
(Правка: 5:44) 5:44, 8 ноя. 2018

Funtik
> vec2 position;
> vec2 texcoord;
попробуй передавать всё как vec4(оставляя неиспользованные компоненты пустыми). у ssbo постоянно проблемы с выравниванием, поэтому упаковщик иногда решает выравнивать все поля до float4, а в C++ при этом выравнивание может быть обычное. если сработает с float4, то будешь знать, куда копать.

#2
9:54, 8 ноя. 2018

Suslik
> поэтому упаковщик иногда решает
упаковщик работает строго по спецификации

#3
10:07, 8 ноя. 2018

Funtik

vec2 position;
  vec2 texcoord;
glVertexArrayAttribFormat(vao, 0, 3, GL_FLOAT, GL_FALSE, 0);

похоже что форматы не совпадают.
чему равен sizeof(Vertex) ?
ПрограммированиеФорумГрафика