ПрограммированиеФорумГрафика

Сохранение скриншота

Страницы: 1 2 Следующая »
#0
14:06, 27 мар 2015

Подскажите, кто разбирается, в чём может быть загвоздка при выводе такого скриншота:
Изображение удалено
В рантайме этот код работает прекрасно, а вот в утилите вылез такой косяк, хотя вроде все параметры указаны верно.

#1
14:24, 27 мар 2015

-1

#2
14:31, 27 мар 2015

Iron Man
> В рантайме этот код работает прекрасно
facepalm
Вообще то это изображение, а не код.
Или я настолько отстал? Что код теперь в картинках пишут?

#3
14:42, 27 мар 2015

Iron Man
А как должен выглядеть?
Скорее всего проблема в выравнивании, а где именно сказать сложно без подробностей.

#4
0:50, 29 мар 2015

Если в bmp сохраняеш, то подобные косяки - обычное дело. Массив пикселей должен быть выровнен.
ну или сохранять в tga.

#5
5:33, 29 мар 2015

g-cont
Как раз в TGA и сохраняю

#6
9:40, 29 мар 2015

Iron Man
> В рантайме этот код работает прекрасно, а вот в утилите вылез такой косяк, хотя
> вроде все параметры указаны верно.

Ошибка в 12 строке, во второй функции снизу.

#7
13:29, 29 мар 2015

Сохранение Ашота :)

#8
16:05, 29 мар 2015

Чтоб в тга так накосячить - это постараца надо :)

#9
17:04, 29 мар 2015

А. Может перед сохранением в хидер добавить флажок 0x20 в переменную атрибутов?
Должно помочь.

#10
19:19, 29 мар 2015

Флажок 20h это bottom-up orientation, а тут, судя по картинке, само изображение меняется! )

#11
3:50, 30 мар 2015

С самого начала допустил ошибку: не привёл код :) вот код:

+ Показать

Хотя вполне возможно, что неправильно вычисляются размеры здесь:

SaveScreenshot(panelscreen->ClientSize.Width, panelscreen->ClientSize.Height, pathToFile);

В glViewport(0, 0, viewportWidth, viewportHeight); передаю те же параметры.

#12
7:10, 30 мар 2015

Почему это всё не работает, я не знаю, но у тебя в коде есть место вероятной утечки памяти.

output = new unsigned char[viewportWidth * viewportHeight * 3];
. . .
if (!sFile) return;
#13
8:19, 30 мар 2015

Iron Man
Используй RGBA формат или поставь до вызова glReadPixels функцию glPixelStorei( GL_PACK_ALIGNMENT, 1 );

#14
9:57, 30 мар 2015

mutcher
> if (!sFile) return;
Тогда бы скриншот вообще не создавался
/A\
RGBA формат пробовал, вообще не работает, а вот glPixelStorei( GL_PACK_ALIGNMENT, 1 ); помогло :) большое спасибо!

Страницы: 1 2 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.