Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Surface и прозрачность

4.3K
11 октября 2004 года
VasAlVit
33 / / 03.09.2004
Здравствуйте.

Проблема состоит в следующем. Я использую DirectX 9. Программа - чистое 2D. Загружается огромное количество изображений различного размера. Т.к. размер не кратен степени 2, то текстуры не подходят и я использую поверхности (IDirect3DSurface9). Изображения загружаются при помощи функции D3DXLoadSurfaceFromFile. У этой функции есть один параметр (предпоследний) - ColorKey - цвет в картинке, который будет прозрачным. Так вот. При копировании поверхности на экран при помощи метода IDirect3DDevice9::StretchRect прозрачные пикселы отображаются чёрным цветом. Как мне скопировать поверхность так, чтобы прозрачные пикселы не отображались (т.е. они реально должны быть прозрачными)?.

Заранее спасибо.
8.6K
03 ноября 2004 года
Al Pachino
10 / / 03.11.2004
У меня абсолютно такая же проблема. Вместо прозрачного цвета выводится черный. Только вместо библиотеки DirectX9 я пользую SDL. Никак не пойму в чем заморочка но видимо у нас одна и та же проблема. Если решу ее - напишу. Если ты решишь - тоже объясни как ты это сделал.
4.3K
03 ноября 2004 года
VasAlVit
33 / / 03.09.2004
Свою проблему я решил следующим образом.

Сперва я написал небольшую функцию на Assembler'е. Она копировала изображение в задний буфер, и при этом учитывала прозрачность. Но работала медленнее, чем аппаратное копирование. Тогда я перешёл к использованию текстур.

Я загружаю изображения как текстуры и рисую прямоугольники с текстурой. Всё нормально, рисуется быстро.

А насчёт SDL ничего не скажу - его не изучал.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог