Я загружаю текстуру 35 x 100 16bpp со следующей командой OpenGL:
glTexImage2D(GL_TEXTURE_2D, 0, GL_RG8, 35, 100, 0, GL_RG, GL_UNSIGNED_BYTE, pixelData);
Но полученная текстура отклоняется на один пиксель влево при увеличении y (как при рисовании, так и при проверке в память графического процессора):
o o x o o o o o x o
o o x o o o o o o x
o o x o o x o o o o
o o x o o o x o o o
o o x o o becomes-> o o x o o
Этот тип разделения может возникнуть, если указанная ширина отличается от pixelData
на один пиксель, но буфер и заданные размеры являются точными. Изменение текстуры на 36 x 100 без каких-либо других изменений также решает проблему. Это происходит ТОЛЬКО для текстур с нечетным числом по ширине.
Мой вопрос: это ошибка драйвера? Насколько я понимаю, не-POT-текстуры были разрешены на современном оборудовании, но это наводит на мысль, что все еще существует какое-то необъявленное требование выравнивания, возможно, указывающее c для 16bpp текстур; нигде я не могу найти упоминания об этом поведении или требованиях.