Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

Как вывести картинку из буфера в DirectDraw?   Найти похожие ветки 

 
Nikki   (2008-02-28 14:06) [0]

Картинка хранится в буфере, есть указатель на нее и данные о ее параметрах. Самое главное, что она формата YUV. Нужно вывести серию таких картинок. Желательно еще использовать оверлей. Я использовала StretchDIBits, но он не работает с YUV 12-ти битным.
Ознакомившись с DD за пару дней в голове путанница, не знаю, с какого конца вообще начать. Есдинственная мысль сделать оверлейную поверхность и в ее структуру в lpSurface записать адрес моего буфера... Но как-то не работаить. Подскажите, пожалуйста, что можно сделать?


 
Sapersky   (2008-02-28 20:03) [1]

Проще всего отконвертировать в RGB и вывести стандартными средствами:

http://www.efg2.com/Lab/Graphics/Colors/YUV.htm

Единственное преимущество оверлея - аппаратное масштабирование, ну и то, что при поддержке нужного формата не нужно ничего конвертировать.

http://www.delphimaster.ru/articles/directx/index.html

В этом примере используются 16-битные UYVY/YUY2. Не знаю, есть ли карты с поддержкой 12-битного YUV; если это planar формат, в том виде, в каком это описано по первой ссылке - то вряд ли. Так что конвертировать, возможно, всё-таки придётся.
А аппаратное масштабирование можно при желании задействовать и с RGB.


 
Nikki   (2008-02-29 10:24) [2]

Спасибо!)


 
Sapersky   (2008-02-29 14:21) [3]

Не знаю, есть ли карты с поддержкой 12-битного YUV

Похоже что есть: Radeon 9000 и интегрированная на i915 выдают YV12 в списке FourCC-форматов (смотрел DXCapsViewer"ом из состава DX SDK).


 
Nikki   (2008-02-29 15:06) [4]

Карточка у меня поддерживает такой формат)
Просто я пыталась создать оверлей и указателю на его поверхность присвоить адрес своего буфера(это работает, но с обычными поверхностями),
но оверлейная, созданная в видеопамяти, не позволяет ставить себе флаги, вынуждающие учитывать эти параметры (что я использую указатель), к ней можно обращаться только залочив и пересылая биты какой-нить memcopy вроде, а это не очень удобно)



Страницы: 1 вся ветка

Текущий архив: 2010.08.27;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.06 c
15-1271746918
JohnKorsh
2010-04-20 11:01
2010.08.27
4 ядра в XP SP3.


15-1267771411
oxffff
2010-03-05 09:43
2010.08.27
Буду в Москве с 22.03 по 26.03. Был бы рад встрече.


15-1272364526
TUser
2010-04-27 14:35
2010.08.27
Удаление комментариев и лишнего кода


2-1270538489
istok
2010-04-06 11:21
2010.08.27
TTimer в Delphi2010


2-1267226371
Дима
2010-02-27 02:19
2010.08.27
Загрузка текст.файла по индексу ListBox.