Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Vlákno názorů k článku
SDL: Hry nejen pro Linux (24)

Laethnes
Laethnes (neregistrovaný)
31. 10. 2008 8:09

Bliting dvou RGBA surfaců

Mno, vím, že je to tak trochu pozdě od vytvoření této série, ale pořád mě přijde aktuální, tak si myslím, že následující info není na škodu nováčkům, protože sám jsem se s tím potýkal poměrně dlouho;

Když v SDL vykreslujete jeden surface do druhého a oba jsou RGBA, nastává jeden problém; výsledná alpha není nějakým součtem, součinem či čímkoli jiným alph z obou obrázků, ale zůstává prostě neměnná. Prakticky to znamená, že když si vytvořím prázdný SDL_Surface, do nějž chci vykreslovat, nakonec nebude vidět nic. Existují dvě řešení (klidně i více, tyhle jsou známy mě), ani jedno není ideální:
- napsat si vlastní GetPixel a PutPixel (viz tento článek) a tudíž i vlastní vykreslovací funkci. Pomalé.
- Když jsem si vykresloval fonty pomocí TTF, udělal jsem si poměrně jednoduchou funkci, která rozdělí text na řádky, ty vykreslí, sloučí do jednoho SDL_Surfacu a ten vrátí. Tady bylo možno u zdrojového surface (ten, který vygenerovala TTF a který blitujeme do cílového) nastavit SDL_SetAlpha(radek, SDL_RLEACCEL, SDL_ALPHA_OPAQUE) a pak se do výsledného surface vykreslí kompletně celý původní obrázek bez ohledu na alphu na zdroji či cíli.


Nicméně super článek, sice se objevil (čti: já ho objevil) až v době, kdy mě takřka plně stačí původní SDL dokumentace, nicméně když jsem se zrovna včera rozhodl udělat si třídu obalující TTF, přijde mě to vhod. A to vlastně pokaždé, kdy potřebuji něco víc, než holou referenci, tak tohle mě bohatě stačí ;). Dík ;)
Zasílat nově přidané příspěvky e-mailem