Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / индексы GL ssbo + direct state access

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

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

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

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

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

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

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

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

/A\Постоялецwww8 ноя. 20189:54#2
Suslik
> поэтому упаковщик иногда решает
упаковщик работает строго по спецификации
/A\Постоялецwww8 ноя. 201810:07#3
Funtik
vec2 position;
  vec2 texcoord;
glVertexArrayAttribFormat(vao, 0, 3, GL_FLOAT, GL_FALSE, 0);

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

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

2001—2018 © GameDev.ru — Разработка игр