Подскажите, кто разбирается, в чём может быть загвоздка при выводе такого скриншота:
В рантайме этот код работает прекрасно, а вот в утилите вылез такой косяк, хотя вроде все параметры указаны верно.
-1
Iron Man
> В рантайме этот код работает прекрасно
facepalm
Вообще то это изображение, а не код.
Или я настолько отстал? Что код теперь в картинках пишут?
Iron Man
А как должен выглядеть?
Скорее всего проблема в выравнивании, а где именно сказать сложно без подробностей.
Если в bmp сохраняеш, то подобные косяки - обычное дело. Массив пикселей должен быть выровнен.
ну или сохранять в tga.
g-cont
Как раз в TGA и сохраняю
Iron Man
> В рантайме этот код работает прекрасно, а вот в утилите вылез такой косяк, хотя
> вроде все параметры указаны верно.
Ошибка в 12 строке, во второй функции снизу.
Сохранение Ашота :)
Чтоб в тга так накосячить - это постараца надо :)
А. Может перед сохранением в хидер добавить флажок 0x20 в переменную атрибутов?
Должно помочь.
Флажок 20h это bottom-up orientation, а тут, судя по картинке, само изображение меняется! )
С самого начала допустил ошибку: не привёл код :) вот код:
Хотя вполне возможно, что неправильно вычисляются размеры здесь:
SaveScreenshot(panelscreen->ClientSize.Width, panelscreen->ClientSize.Height, pathToFile);
В glViewport(0, 0, viewportWidth, viewportHeight); передаю те же параметры.
Почему это всё не работает, я не знаю, но у тебя в коде есть место вероятной утечки памяти.
output = new unsigned char[viewportWidth * viewportHeight * 3]; . . . if (!sFile) return;
Iron Man
Используй RGBA формат или поставь до вызова glReadPixels функцию glPixelStorei( GL_PACK_ALIGNMENT, 1 );
mutcher
> if (!sFile) return;
Тогда бы скриншот вообще не создавался
/A\
RGBA формат пробовал, вообще не работает, а вот glPixelStorei( GL_PACK_ALIGNMENT, 1 ); помогло :) большое спасибо!
Тема в архиве.