glVertexAttribPointer и требования к параметрам шага
У меня странная ошибка в разрабатываемом приложении OpenGL / GLES. На определенном устройстве (Samsung Galaxy S8) похоже glVertexAttribPointer
приводит к бреду, если для параметра шага установлено значение 18 байт. Исчезновение исчезает, если я добавляю два байта заполнения к каждому компоненту (всего 20 байтов).
Обратите внимание, что нет glGetError
срабатывает независимо.
Эта ошибка не возникает ни на одном другом мобильном устройстве, которое я тестировал, равно как и на моем компьютере под управлением Windows, работающем под управлением OpenGL.
Я предполагаю, что шаг должен быть кратным четырем байтам, но я не могу найти документацию, подтверждающую это.
Кто-нибудь знает, существуют ли специфические требования к устройству для параметра шага?
(18 байтов состоят из трех чисел с плавающей точкой32, за которыми следуют три int16_t = 3 * 4 байта + 3*2 байта)
1 ответ
Требуется ли выравнивание шага, указанного в спецификации, до 4 байтов? Нет.
Есть ли какое-либо оборудование, которое эффективно соответствует этому требованию? Да, о чем свидетельствует тот факт, что Vulkan имеет это требование. Таким образом, вы должны избегать смещения данных.