.[ ČeskéHry.cz ].
SDL
Jdi na stránku 1, 2  Další
 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> C / C++
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
survik1



Založen: 22. 08. 2007
Příspěvky: 107

PříspěvekZaslal: 22. srpen 2007, 23:43:49    Předmět: SDL Odpovědět s citátem

Dobrý den Smile
Jsem nováček a prakticky hned jsem narazil na chybu. Mám funkci, která by měla za sebou vykreslit jeden a ten samí obrázek. Samozřejmě nic nevykresluje Sad
Funkce:
kód:

bool plocha()
{
     if((g_img = IMG_Load("images/stena1.png")) == NULL)
     {
               printf("Nepodařilo se nahrát obrázek \"stena1.png\": %s\n", SDL_GetError());
               return false;
     }
     for (int x = 0; x != WIN_HEIGHT; x += 40)
     {
         if(SDL_BlitSurface(g_img, NULL, screen, NULL) == -1) printf("Nepodařilo se uložit obrázek: %s\n", SDL_GetError());
         SDL_UpdateRect(screen, 0, x, 40, 40);
     }
     return true;
}


Hláska z stdout.txt
kód:

Nepodařilo se uložit obrázek: SDL_UpperBlit: passed a NULL surface


Nevíte co s tím? Děkuju
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Weny Sky



Založen: 28. 07. 2007
Příspěvky: 241

PříspěvekZaslal: 22. srpen 2007, 23:55:04    Předmět: Odpovědět s citátem

mas inicializovanou promennou screen ?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
survik1



Založen: 22. 08. 2007
Příspěvky: 107

PříspěvekZaslal: 23. srpen 2007, 00:27:28    Předmět: Odpovědět s citátem

Weny Sky napsal:
mas inicializovanou promennou screen ?

jako globální
kód:

SDL_Surface *screen;


a v inicializační funkci
kód:

screen = SDL_SetVideoMode(WIN_WIDTH, WIN_HEIGHT, 32, SDL_HWSURFACE);
[/code]
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Tendor



Založen: 20. 08. 2007
Příspěvky: 7
Bydliště: Kráter

PříspěvekZaslal: 23. srpen 2007, 01:01:07    Předmět: Re: SDL Odpovědět s citátem

kód:
if(SDL_BlitSurface(g_img, NULL, screen, NULL) == -1)

Prvni NULL sezere a bude vykreslovat celej obrazek, ale u toho druhyho nevim nevim. Nema cilovou oblast vykresleni, coz otevira haldu moznosti jak to vykreslit a s tim si asi neporadi...

kód:
SDL_UpdateRect(screen, 0, x, 40, 40);

SDL_UpdateRect ti tam nenasazi jednotlivy obrazky, ale aktualizuje oblast okna... Wink

Pak jen pro jistotu - pouzivas double buffering? A jestli jo, nezapomels na jejich prohozeni?

Jinak nez ses pustil do onoho sazeni obrazku, skusil sis pro kontrolu vykreslit jeden? Pokud ne, tak tim zacni. Potom na rootu je serial o sdl, ale to asi vis... Ja sdl nevidel hodne dlouho, takze honem pryc. Embarassed
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
survik1



Založen: 22. 08. 2007
Příspěvky: 107

PříspěvekZaslal: 23. srpen 2007, 07:28:09    Předmět: SDL Odpovědět s citátem

To Tendor:
Doublebuffering nepoužívám. Ale, když tam nemám udávanou pozici, bude to asi tím =) Pokusím se ještě někde nastudovat něco od druhýho zdroje =)
Jo a jeden obrázek to vykreslilo...v rohu =)

Děkuji všem Wink
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
survik1



Založen: 22. 08. 2007
Příspěvky: 107

PříspěvekZaslal: 23. srpen 2007, 07:45:58    Předmět: Odpovědět s citátem

hotovo =) Oprava kódu:
kód:

bool plocha()
{
     if((g_img = IMG_Load("images/stena1.png")) == NULL)
     {
               printf("Nepodařilo se nahrát obrázek \"stena1.png\": %s\n", SDL_GetError());
               return false;
     }
     for (int x = 0; x != WIN_HEIGHT; x = x+40)
     {
         SDL_Rect rect;
         rect.x = 0;
         rect.y = x;
         if(SDL_BlitSurface(g_img, NULL, screen, &rect) == -1) printf("Nepodařilo se uložit obrázek: %s\n", SDL_GetError());
         SDL_UpdateRect(screen, 0, x, 40, 40);
     }
     return true;
}
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
dadajax



Založen: 29. 07. 2007
Příspěvky: 26

PříspěvekZaslal: 23. srpen 2007, 08:06:13    Předmět: Odpovědět s citátem

Ještě to můžeš trochu upravit. Takhle zbytečně v tom cyklu deklaruješ pokaždé proměnou rect.
kód:

bool plocha()
{
     if((g_img = IMG_Load("images/stena1.png")) == NULL)
     {
               printf("Nepodařilo se nahrát obrázek \"stena1.png\": %s\n", SDL_GetError());
               return false;
     }
     SDL_Rect rect;
     rect.x = 0;
     for (int x = 0; x != WIN_HEIGHT; x = x+40)
     {
         rect.y = x;
         if(SDL_BlitSurface(g_img, NULL, screen, &rect) == -1) printf("Nepodařilo se uložit obrázek: %s\n", SDL_GetError());
         SDL_UpdateRect(screen, 0, x, 40, 40);
     }
     return true;
}
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
frca



Založen: 28. 07. 2007
Příspěvky: 1561

PříspěvekZaslal: 23. srpen 2007, 17:12:00    Předmět: Odpovědět s citátem

Toto téma si přímo koleduje o sekci "Ostatní knihovny". S C++ to nesouvisí. S obecným programováním málo. No ale když si nedáte poradit... Laughing
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
dadajax



Založen: 29. 07. 2007
Příspěvky: 26

PříspěvekZaslal: 23. srpen 2007, 17:35:31    Předmět: Odpovědět s citátem

Taky jsem pro, když tu může být sekce 3D API / 3D enginy , mohla by se tu zavést i druhá sekce, podobného znění, akorát o jeden rozměr menší Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
frca



Založen: 28. 07. 2007
Příspěvky: 1561

PříspěvekZaslal: 23. srpen 2007, 19:43:49    Předmět: Odpovědět s citátem

Já bych to nechal obecně pro všechny ostatní knihovny, dá se tam pak hodit jak sdl, tak třeba fmod a nakonec i SDL_Mixer, libcurl, ...
Knihoven je zkrátka hodně a nemá smysl podle mě cpát všechno do C++.


Naposledy upravil frca dne 23. srpen 2007, 20:49:28, celkově upraveno 2 krát
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 23. srpen 2007, 20:17:51    Předmět: Odpovědět s citátem

A nebo taky udelat sekci "Pro zacatecniky" Wink
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
survik1



Založen: 22. 08. 2007
Příspěvky: 107

PříspěvekZaslal: 23. srpen 2007, 20:19:59    Předmět: - Odpovědět s citátem

Eosie napsal:
A nebo taky udelat sekci "Pro zacatecniky" Wink

Jsme se zase jednou zasmáli... Evil or Very Mad
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
dadajax



Založen: 29. 07. 2007
Příspěvky: 26

PříspěvekZaslal: 23. srpen 2007, 20:21:19    Předmět: Odpovědět s citátem

Byt tu sekce pro zacatecniky, tak to pak moderatori nebudou stihat promazavat...bude tam vic prispevku nez v popelnici Laughing
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
survik1



Založen: 22. 08. 2007
Příspěvky: 107

PříspěvekZaslal: 23. srpen 2007, 20:33:18    Předmět: - Odpovědět s citátem

A pak se divíte, že se tady neobjevuje moc nováčků, když je takhle sjíždíte Laughing
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Weny Sky



Založen: 28. 07. 2007
Příspěvky: 241

PříspěvekZaslal: 23. srpen 2007, 23:22:51    Předmět: Odpovědět s citátem

Nechapu proc pisete, ze to ma byt v jine sekci. Zaprve dotycny s tim uz nic neudela. Zadruhe strhne se pak zbytecny OT! Zatreti od toho jsou tu moderatori. Za-posledni pokud mate potrebu, tak napiste PM nekteremu moderatorovi, aby to presunul, ale takto to opravdu nema smysl, nehlede na to ze priddavate praci moderatorovi, ktery pote musi smazat ten OT!
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> C / C++ Časy uváděny v GMT + 1 hodina
Jdi na stránku 1, 2  Další
Strana 1 z 2

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna