SDL_gfx zoomSurface() – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

SDL_gfx zoomSurface() – C / C++ – Fórum – Programujte.comSDL_gfx zoomSurface() – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Figa0
Super člen
12. 9. 2010   #1
-
0
-

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ěď.

Nahlásit jako SPAM
IP: 90.177.38.–
Reklama
Reklama
yaqwsx+9
Posthunter
12. 9. 2010   #2
-
0
-

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

Nahlásit jako SPAM
IP: 85.160.113.–
Life is too short to remove USB mass storage safely...
Správný drsňák udělá z konzole cokoliv
Figa0
Super člen
12. 9. 2010   #3
-
0
-

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.

Nahlásit jako SPAM
IP: 90.177.38.–
zdenda
~ Anonymní uživatel
257 příspěvků
12. 9. 2010   #4
-
0
-

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);

Nahlásit jako SPAM
IP: 213.211.51.–
zdenda
~ Anonymní uživatel
257 příspěvků
12. 9. 2010   #5
-
0
-

Samozřejmě to takhle dělá spoustu zbytečné práce, ale to už si v případě potřeby vyladíš.

Nahlásit jako SPAM
IP: 213.211.51.–
Figa0
Super člen
12. 9. 2010   #6
-
0
-

Děkuji to je presne ono. Nejaka sance na zrycleni?

Nahlásit jako SPAM
IP: 90.177.38.–
zdenda
~ Anonymní uživatel
257 příspěvků
13. 9. 2010   #7
-
0
-

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.

Nahlásit jako SPAM
IP: 213.211.51.–
Figa0
Super člen
14. 9. 2010   #8
-
0
-

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.

Nahlásit jako SPAM
IP: 90.177.38.–
Figa0
Super člen
14. 9. 2010   #9
-
0
-

Tak jsem použil SPRIG a ten je minimálně dvakrát tak rychlý jak SDL_gfx.

Nahlásit jako SPAM
IP: 90.177.38.–
Figa0
Super člen
20. 9. 2010   #10
-
0
-

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.

Nahlásit jako SPAM
IP: 90.177.38.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 102 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý