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

Вниз

Пара вопросов по Direct Draw   Найти похожие ветки 

 
Дмитрий В. Белькевич   (2005-05-12 05:35) [0]

1. Битность всех дайректовых поверхностей idirectdrawsurface7 всегда равна битности дисплея? Т.е. битность дисплея фактически выставляет битность этих пов-тей. Я правильно понял? И первичной, и внеэкранных?
2. Можно ли с помощью direct draw сделать такую фичу:
a) создать внеэкранную пов-ть, загнать в неё нужные данные.
б) отобразить их, но не простым блитом (что сейчас и делаю), а выполнять над каждым пиксеелем некоторые преобразования - табличное изменение яркости пикселей. Это можно сделать, как я понял, если включить режим 8 bit у дисплея, и изменять палитру у первичной пов-ти (собсно, в msdn написано, что палитра только для первичной пов-ти и имеет смысл). Но! Нужен либо 32 битный, либо 24 битный режим монитора - так как кроме восьмибитных изображений нужно смотреть полноцветные изображния с количеством цветов гораздо большим, чем вмещается в 8 бит.


 
Sapersky   (2005-05-12 12:19) [1]

Т.е. битность дисплея фактически выставляет битность этих пов-тей.

В системной памяти можно создать любого формата.

выполнять над каждым пиксеелем некоторые преобразования - табличное изменение яркости пикселей. Это можно сделать, как я понял, если включить режим 8 bit у дисплея, и изменять палитру у первичной пов-ти

Есть ещё гамма-контроль, IDirectDrawGammaControl. Действует тоже на первичную поверхность, но при любой глубине цвета.

(собсно, в msdn написано, что палитра только для первичной пов-ти и имеет смысл)

Ещё для текстур.


 
Дмитрий В. Белькевич   (2005-05-13 14:28) [2]

Большое спасибо за ответ.

>>Т.е. битность дисплея фактически выставляет битность этих пов-тей.

>В системной памяти можно создать любого формата.

Возможно ли с такой поверхности потом сделать blt на первичную поверхность, которая в другом формате?

>>выполнять над каждым пиксеелем некоторые преобразования - табличное изменение яркости пикселей. Это можно сделать, как я понял, если включить режим 8 bit у дисплея, и изменять палитру у первичной пов-ти

>Есть ещё гамма-контроль, IDirectDrawGammaControl. Действует тоже на первичную поверхность, но при любой глубине цвета.

То есть, гамма-контроль действует не только на первичную? Первичную-то мне как раз и не нужно изменять - нужно изменять особым образом внеэкранную поверхность, а затем выводить блитом на первичную. Нужно делать замену цветов (или градаций яркости) на внеэкранной, а затем выводить на первичную. Грубо говоря, нужно регулировать яркость/контрастность выводимой картинки. Сейчас приходится делать через временные буферы с попиксельным пересчетом основным процессором в основной памяти. Хотелось бы прикрутить как-то образом палитры, что бы процессор вообще не гонять.

>>(собсно, в msdn написано, что палитра только для первичной пов-ти и имеет смысл)

>Ещё для текстур.

Там имелось в виду, что из всех видов поверхностей палитра работает только с первичной.

Еще небольшой вопрос: какой максимальный размер может быть у текстур?


 
Sapersky   (2005-05-14 13:27) [3]

>В системной памяти можно создать любого формата.
Возможно ли с такой поверхности потом сделать blt на первичную поверхность, которая в другом формате?


Наверное можно (точно не помню, а проверять сейчас некогда), иначе зачем они вообще? Другое дело, что преобразование форматов может делаться софтверно.
Хотя, недавно вычитал в разделе SDK про палитры:
It is important to note that DirectDraw blits never perform color conversion; any palettes attached to the source or destination surface of a blit are ignored.
Может быть это относится только к схеме "палитровая->палитровая"... не знаю.

То есть, гамма-контроль действует не только на первичную?

Только на первичную.

Там имелось в виду, что из всех видов поверхностей палитра работает только с первичной.

С текстурой (которая в DX7 та же поверхность) при выводе через D3D (полигонами) работает, проверял. Если, конечно, видеокарта поддерживает палитровые текстуры.
Собственно, в SDK так и написано: Nonprimary surface palettes are intended for use by Direct3D applications.

Еще небольшой вопрос: какой максимальный размер может быть у текстур?

Зависит от видеокарты. Сейчас практически у всех довольно приличный, например, у интегрированных Intel - 1024 * 1024, GeForce2 - 2048 * 2048. Если не влезает - нарезается на кусочки, у меня где-то был модуль...
Кстати, с текстурами можно менять яркость и без палитры - изменяя цвет полигона, на который она накладывается.

Или может быть проще вообще всё сделать на софте (если требуется только изменять палитру, не нужно никаких спецэффектов вроде сжатия/растяжения)? 8-битный битмап довольно быстро рисуется, даже на весь экран.



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

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

Наверх




Память: 0.48 MB
Время: 0.06 c
14-1125781643
}|{yk
2005-09-04 01:07
2005.10.02
Мы сделали это!!!!


1-1126591898
Shlomo
2005-09-13 10:11
2005.10.02
Web Server Application и Глобальные переменные?


1-1126342422
Андрей Молчанов
2005-09-10 12:53
2005.10.02
ListView - сделать, чтобы всегда был выделен хотя бы один элемент


6-1117549229
Juice
2005-05-31 18:20
2005.10.02
Отправка SMTP-сообщения


3-1124429747
_alex_niv_
2005-08-19 09:35
2005.10.02
Работа с базой