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