glVertexAttribPointer и требования к параметрам шага

У меня странная ошибка в разрабатываемом приложении OpenGL / GLES. На определенном устройстве (Samsung Galaxy S8) похоже glVertexAttribPointer приводит к бреду, если для параметра шага установлено значение 18 байт. Исчезновение исчезает, если я добавляю два байта заполнения к каждому компоненту (всего 20 байтов).

Обратите внимание, что нет glGetError срабатывает независимо.

Эта ошибка не возникает ни на одном другом мобильном устройстве, которое я тестировал, равно как и на моем компьютере под управлением Windows, работающем под управлением OpenGL.

Я предполагаю, что шаг должен быть кратным четырем байтам, но я не могу найти документацию, подтверждающую это.

Кто-нибудь знает, существуют ли специфические требования к устройству для параметра шага?

(18 байтов состоят из трех чисел с плавающей точкой32, за которыми следуют три int16_t = 3 * 4 байта + 3*2 байта)

1 ответ

Решение

Требуется ли выравнивание шага, указанного в спецификации, до 4 байтов? Нет.

Есть ли какое-либо оборудование, которое эффективно соответствует этому требованию? Да, о чем свидетельствует тот факт, что Vulkan имеет это требование. Таким образом, вы должны избегать смещения данных.

Другие вопросы по тегам