Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
survik1
Založen: 22. 08. 2007 Příspěvky: 107
|
Zaslal: 22. srpen 2007, 23:43:49 Předmět: SDL |
|
|
Dobrý den
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
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 |
|
 |
Weny Sky

Založen: 28. 07. 2007 Příspěvky: 241
|
Zaslal: 22. srpen 2007, 23:55:04 Předmět: |
|
|
mas inicializovanou promennou screen ? |
|
Návrat nahoru |
|
 |
survik1
Založen: 22. 08. 2007 Příspěvky: 107
|
Zaslal: 23. srpen 2007, 00:27:28 Předmět: |
|
|
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 |
|
 |
Tendor
Založen: 20. 08. 2007 Příspěvky: 7 Bydliště: Kráter
|
Zaslal: 23. srpen 2007, 01:01:07 Předmět: Re: SDL |
|
|
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...
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.  |
|
Návrat nahoru |
|
 |
survik1
Založen: 22. 08. 2007 Příspěvky: 107
|
Zaslal: 23. srpen 2007, 07:28:09 Předmět: SDL |
|
|
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  |
|
Návrat nahoru |
|
 |
survik1
Založen: 22. 08. 2007 Příspěvky: 107
|
Zaslal: 23. srpen 2007, 07:45:58 Předmět: |
|
|
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 |
|
 |
dadajax
Založen: 29. 07. 2007 Příspěvky: 26
|
Zaslal: 23. srpen 2007, 08:06:13 Předmět: |
|
|
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 |
|
 |
frca

Založen: 28. 07. 2007 Příspěvky: 1561
|
Zaslal: 23. srpen 2007, 17:12:00 Předmět: |
|
|
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...  |
|
Návrat nahoru |
|
 |
dadajax
Založen: 29. 07. 2007 Příspěvky: 26
|
Zaslal: 23. srpen 2007, 17:35:31 Předmět: |
|
|
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ší  |
|
Návrat nahoru |
|
 |
frca

Založen: 28. 07. 2007 Příspěvky: 1561
|
Zaslal: 23. srpen 2007, 19:43:49 Předmět: |
|
|
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 |
|
 |
Marek

Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 23. srpen 2007, 20:17:51 Předmět: |
|
|
A nebo taky udelat sekci "Pro zacatecniky"  _________________ AMD Open Source Graphics Driver Developer |
|
Návrat nahoru |
|
 |
survik1
Založen: 22. 08. 2007 Příspěvky: 107
|
Zaslal: 23. srpen 2007, 20:19:59 Předmět: - |
|
|
Eosie napsal: |
A nebo taky udelat sekci "Pro zacatecniky"  |
Jsme se zase jednou zasmáli...  |
|
Návrat nahoru |
|
 |
dadajax
Založen: 29. 07. 2007 Příspěvky: 26
|
Zaslal: 23. srpen 2007, 20:21:19 Předmět: |
|
|
Byt tu sekce pro zacatecniky, tak to pak moderatori nebudou stihat promazavat...bude tam vic prispevku nez v popelnici  |
|
Návrat nahoru |
|
 |
survik1
Založen: 22. 08. 2007 Příspěvky: 107
|
Zaslal: 23. srpen 2007, 20:33:18 Předmět: - |
|
|
A pak se divíte, že se tady neobjevuje moc nováčků, když je takhle sjíždíte  |
|
Návrat nahoru |
|
 |
Weny Sky

Založen: 28. 07. 2007 Příspěvky: 241
|
Zaslal: 23. srpen 2007, 23:22:51 Předmět: |
|
|
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 |
|
 |
|