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

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

#0

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

+ Показать

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

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

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

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

8 ноя. 2018

#1

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

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

#2

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

8 ноя. 2018

#3

Funtik

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

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

8 ноя. 2018

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