Значит так.
Есть изображение: BMP, 24bpp, 122x169.
Задача: использовать его в качестве текстуры OpenGL, чего ж еще.
Изображение читается правильно (проверено).
Так как красная книга обещала автоматический рескейл "неправильных текстур" в gluBuild2DMipmaps, использовал именно эту функцию. Эффект показан в аттаче.
Затем пробую такое:
Думаю, по именам понятно где что. iNewWidth и iNewHeight - ближайшие наименьшие степени 2. Рассчитаны правильно (проверено).
Результат аналогичный.
Что самое ужасное - не понятно какие именно размеры вызывают эти искажения. Некоторые изображения с размерами отличными от степеней 2 нормально отображаются.
Jumpdaphuckup! типичная трабла bmp.
Перепакуй в TGA и все пройдет.
ЗЫ. я не разбирался в чем там конкретно дело, но по-моему один бит сбивается в самом начале.
Нет, формат здесь не при чем - все получается аналогично и для jpg и для tga. К тому же на входе у меня нормальный массив данных. Я его проверял рисованием по точкам через винапи.
У меня еще есть подозрение (судя по скрину), что у тебя нифига не рискейлилось. То есть ты загрузил старую картинку с новыми значениями ширины и высоты. Ты именно pResized загружаешь в текстуру? Он достаточного размера маллокнут?
XaeroX да, похоже на правду Но там дело не в этом. У меня изначально было три загрузчика: bmp, jpg и tga. Все они создавали массив точек, который успешно рисовался через винапи. Но при создании огл-текстуры из этого массива (если там не степени 2) получается хрень.
Если вообще убрать нафиг весь мой код и загружать текстуру так: