Ahoj, jsem úplný začátečník v SDL knihovně a potřebuji jen upravit kód. Mám surface, která má nastaven video mode na 240x160. Obsah do ní vykreslím pomocí SDL_flip(screen); Tuto surface potřebuji dvakrát zvětšit a vykreslit znova. Jak přesně mám prosím postupovat? Zkoušel sem toho už spoustu, ale nic nepomohlo. Předem děkuji za odpověď.
Fórum › C / C++
SDL_gfx zoomSurface()
Z tvého dotazu nejsem moc moudrý; ta surface s rozměry 240×160 px je okno? Jak vykreslíš pomocí SDL_Flip? Nemáš na mysli aktualizaci obrazu? Jak ji chcš zvětšit a znovu vykreslit?
Zkus svůj problém popsat podrobněji; nebo ještě lépe přihoď kód. Pak ti bude možná někdo schopen poradit
To yaqwsx : Promin vazne sem to docela zamotal. Ano ta surface je okno a ja potrebuji vzit vsechno c rozsahu 240x160px zvetsit to na 480x320px a vykreslit do okna. Kod je hodne dlouhy. Vlastne chci jen 2x zvetsit surface a vykreslit ji.
Takže teď máš ve screen vykreslený obraz, tak ho nakonec (před flipem) zoomni, dostaneš nový surface a ten zase vykresli.
SDL_Surface *zoomed = zoomSurface(screen, 2.0, 2.0, SMOOTHING_ON); // SMOOTHING_OFF je výrazně rychlejší
if (zoomed) {
SDL_BlitSurface(zoomed, NULL, screen, NULL);
SDL_FreeSurface(zoomed);
}
SDL_Flip(screen);
Jestli jsem to dobře pochopil, tak kreslíš jen na čtvrtinu screenu a tu pak roztáhneš přes celý screen, takže se zbytek zoomuje zbytečně. Vytvoř si menší surface, do kterého budeš kreslit, a ten zoomuj.
Místo SMOOTHING_ON použij SMOOTHING_OFF, pokud netrváš na vyhlazování.
Hloubky jiné než 8 a 32 bitů se před zoomem převádí na 32, takže pokud nemusíš, tak je nepoužívej.
Vytváření nového surface s každým zoomem taky na rychlosti nepřidá. Můžeš se povrtat ve zdrojácích.
Děkuji bohužel musím používat 16 b, tak tedy zoomuji surface jen 240x160 a zoom vytvarim do surface 480x320 Jak prosím vás řeknu sdl, že chci zobrazovat do okna tu nvoou surface? SDL_SetVideoMode nefunguje. Děkuji. Pokud máte ještě nějaké nápady na zrychlení sem s nimi.
Ahoj tak sem tu znova. Input řeším pomocí case s event.keysym.sym a když dostanu třeba SDL_RETURN, tak spustím nějakou fci. Nemáte někdo nějaký nápad jak pro toto řešení vytvořit soubor s konfugurací tlačítek? Abych pak mohl mít v konfiguračním souboru třeba, že SDL_q a SDL_Q volá stejnou fci. Děkuji za reakce.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Moderátoři diskuze