Главная страница
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.055 c
15-1264519606
Igor_guest
2010-01-26 18:26
2010.08.27
распространение продукта на Delphi


15-1268394964
12
2010-03-12 14:56
2010.08.27
2x join в Access


2-1274359047
РП
2010-05-20 16:37
2010.08.27
Байты в число и число в байты нужной размерности


3-1242172459
Lex_!
2009-05-13 03:54
2010.08.27
Список ключевых полей таблици MSSQL2000


15-1267447734
Empleado
2010-03-01 15:48
2010.08.27
COMODO AV