SDL nekreslí – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

SDL nekreslí – C / C++ – Fórum – Programujte.comSDL nekreslí – C / C++ – Fórum – Programujte.com

 

vollf820
Stálý člen
15. 9. 2008   #1
-
0
-

Zdravím,

tak dělám SDL podle seriálu zde a narazil sem na problém. Všechno mi jede, ukáže se černý okno, chybu to nepíše žádnou, ale kdyz zkopíruju zdroják z lekce 2 (vykreslování barevnejch pixelů v okně 800 x 600) tak je okno pořád černý.

Kdyz sem se učil SDL ze stránek root.cz, kde je v 5. lekci nahrání obrázku fukncí SDL_LoadImage() a taky sem jen zkopíroval jejich kód, taky se mi zobrazilo jen černé okno, s titulkem a tak, ale ten obrázek v něm nebyl zobrazenej. Zdá se mi, že je to ta samá chyba, nevíte někdo čím to?? Prosíím .... pro kontrolu přikládám kód:

Nahlásit jako SPAM
IP: 91.195.106.–
15. 9. 2008   #2
-
0
-

To DrawScene musi byt volano v game loopu (te nekonecne smycce).

Nahlásit jako SPAM
IP: 78.102.164.–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
vollf820
Stálý člen
15. 9. 2008   #3
-
0
-

Dík,

tak pokud to dobře chápu, tak by konec kódu měl vypadat takto:

bool done=false;


while(done == false){

DrawScene(screen);


SDL_Event event;
while(SDL_PollEvent(&event) ) {
if(event.type == SDL_QUIT) done=true;

}
}
}


ale to stejne nejde. Ani kdyz to dam za to SDL_Event; :(

Nahlásit jako SPAM
IP: 91.195.106.–
15. 9. 2008   #4
-
0
-

A co to dela?

Nahlásit jako SPAM
IP: 78.102.164.–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
vollf820
Stálý člen
15. 9. 2008   #5
-
0
-

NO objevi se klasicky cerny SDL okno s titulkem Jednoducha ukazka 'inicializace' SDL grafiky a je to ... zkratka dela to vse krom toho vykreslovani :) BTW: to co sem tu uvadel jako prvni ... tak tam ta funkce byla taky v ty smycce ne ?

Nahlásit jako SPAM
IP: 91.195.106.–
KIIV
~ Moderátor
+43
God of flame
15. 9. 2008   #6
-
0
-

mozna meli na mysli dat to sem:

while(SDL_PollEvent(&event) ) {

DrawScene(screen);
if(event.type == SDL_QUIT) done=true;
}


Nahlásit jako SPAM
IP: 80.188.94.–
Program vždy dělá to co naprogramujete, ne to co chcete...
15. 9. 2008   #7
-
0
-

To KIIV: To je blbost, to PollEvent je smycka udalosti, tam kresleni nepatri.

To volf: ukaz co mas ted za kod

Nahlásit jako SPAM
IP: 78.102.164.–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
KIIV
~ Moderátor
+43
God of flame
15. 9. 2008   #8
-
0
-

To CommanderZ : co ja vim sem s sdl nedelal :D

Nahlásit jako SPAM
IP: 80.188.94.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Wizard0
Stálý člen
15. 9. 2008   #9
-
0
-

skusal si to prehnat debugerom ci sa ti to nesekne v eventovej smycke?

Nahlásit jako SPAM
IP: 85.216.182.–
survik1
~ Moderátor
0
Posthunter
15. 9. 2008   #10
-
0
-

Proměnná SDL_Surface *screen musí být globální, v těch tvých funkcích neexistuje a tak se samozřejmě nemají pixeli kam zapisovat.

Nahlásit jako SPAM
IP: 89.102.156.–
Život je jen hra, která se nedá vyhrát.
Wizard0
Stálý člen
15. 9. 2008   #11
-
0
-

to survik1: no on tej funkcii predava parameter 'screen' takze v tom by problem nemal byt ...

Nahlásit jako SPAM
IP: 85.216.182.–
Wizard0
Stálý člen
15. 9. 2008   #12
-
0
-

hmm zaujimave ze ti to nejde som si to teraz kompiloval a v poho to fungovalo

Nahlásit jako SPAM
IP: 85.216.182.–
vollf820
Stálý člen
15. 9. 2008   #13
-
0
-

Hmmm takze sem prisel na par veci. Mam VC++ 9.0 a to je teda program. po zmačknutí F5 mi to spouštělo uplně něco jinyho než sem měl na obrazovce, zkratka to spouštělo předchozí projekt, takze cokoli sem menil v tom co sem delal porad to spoustelo to druhy, dost divna vlastnost teda, pak sem prisel na to ze se nejdriv musi dat "Rebuild" a pak teprve poustet debuger atd.

No a kdyz uz sem to teda vyresil a kdesi cosi, tak kdyz spustim tohle co sem sem pastnul, tak se mi pro zmenu neobjevi okno zadny, a debuger pise

The program '[2344] 2.exe: Native' has exited with code 1 (0x1).

. Podotykam ze chybu to tam nikde nepise zadnou. Predpokladam ze to skonci na nejakym tom exit (1) ale nevim na kterym, jelikoz sem nenasel kam se pise ten text z tech prikazu printf. Ja myslel ze to ma vytvorit nejaky chybovy textaky ne?? Boze proc nemuze neco fungovat normalne ..... :(

Nahlásit jako SPAM
IP: 91.195.106.–
survik1
~ Moderátor
0
Posthunter
15. 9. 2008   #14
-
0
-

To vollf82 : Klasická chování výpisu do texťáků a výpisů do konzole bylo v novějších verzích SDL odebráno.
Nevím, jestli to může být tím, ale int main() nemá návratovou hodnotu (0 = ok; 1 = ukončení po chybě)

Nahlásit jako SPAM
IP: 89.102.156.–
Život je jen hra, která se nedá vyhrát.
vollf820
Stálý člen
15. 9. 2008   #15
-
0
-

Tak na co tam je tohle

printf("Vytvoření okna se nezdařilo: %s\n", SDL_GetError());


exit(1);


Kdyz se to nikam nenapíše sakra :( ... Me štve to, že i kdyz člověk zkopíruje nějakej kód z učebnice, tak to nejde kvůli nějakejm jinejm kravinam. Linkování atd. uz sem jakž takž pochopil (stejně mě štve, že i kdyz prilinkuju vsechny knihovny a include soubory, tak do projektu musim dopsat tohle - #pragma comment (lib, "SDL.lib") #pragma comment (lib, "SDLmain.lib") jinak to zkrátka nefunguje).

Dneska uz na to kaslu protoze mam nervy v hajzlu, ale sem zvedavej jestli to takhle pujde dal, jak se naucim SDL. Vsude ctu jak je to jednoduchy, prehledny a skveli pro začatky v grafice, ale VC++ mi prijde samo o sobe ze to spis ztěžuje práci. Uz jen ten případ kterej sem popisoval nahoře. V Dev-C++ zkrátka co sem měl před sebou, to se kompilovalo. A tady ... ?

Nahlásit jako SPAM
IP: 91.195.106.–
vollf820
Stálý člen
15. 9. 2008   #16
-
0
-

Jinak to tím nebylo, žadny okno ani neproblikne a vypis v kompilátoru je následující:

'2.exe': Loaded 'C:\DATA\C++\SDL\2\Debug\2.exe', Symbols loaded.
'2.exe': Loaded 'C:\WINDOWS\system32\ntdll.dll'
'2.exe': Loaded 'C:\WINDOWS\system32\kernel32.dll'
'2.exe': Loaded 'C:\WINDOWS\system32\SDL.dll', Binary was not built with debug information.
'2.exe': Loaded 'C:\WINDOWS\system32\winmm.dll'
'2.exe': Loaded 'C:\WINDOWS\system32\user32.dll'
'2.exe': Loaded 'C:\WINDOWS\system32\gdi32.dll'
'2.exe': Loaded 'C:\WINDOWS\system32\advapi32.dll'
'2.exe': Loaded 'C:\WINDOWS\system32\rpcrt4.dll'
'2.exe': Loaded 'C:\WINDOWS\system32\secur32.dll'
'2.exe': Loaded 'C:\WINDOWS\system32\msvcrt.dll'
'2.exe': Loaded 'C:\WINDOWS\WinSxS\x86_Microsoft.VC90.DebugCRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_597c3456\msvcr90d.dll'
'2.exe': Loaded 'C:\WINDOWS\system32\ddraw.dll'
'2.exe': Loaded 'C:\WINDOWS\system32\dciman32.dll'
'2.exe': Unloaded 'C:\WINDOWS\system32\ddraw.dll'
'2.exe': Unloaded 'C:\WINDOWS\system32\dciman32.dll'
'2.exe': Loaded 'C:\WINDOWS\system32\kbdus.dll'
'2.exe': Unloaded 'C:\WINDOWS\system32\kbdus.dll'
'2.exe': Loaded 'C:\WINDOWS\system32\kbdcz.dll'
'2.exe': Unloaded 'C:\WINDOWS\system32\kbdcz.dll'
The program '[3236] 2.exe: Native' has exited with code 1 (0x1).



Radši sem ještě hážu kód, vim je to dlouhý ale co kdyby:

Nahlásit jako SPAM
IP: 91.195.106.–
Wizard0
Stálý člen
15. 9. 2008   #17
-
0
-

SDL_Init vracia 0 ked sa podary. Ked nie tak -1.
Podmienke



if(SDL_Init(SDL_INIT_VIDEO) == 0) {


ma vyzerat takto


if(SDL_Init(SDL_INIT_VIDEO) < 0) {

Nahlásit jako SPAM
IP: 85.216.182.–
Phoenix0
Super člen
15. 9. 2008   #18
-
0
-

nezdá se mi to deklarování SDL_Event event; přímo ve smyčce událostí, ale nevim jestli to vyřeší tvůj problém

Nahlásit jako SPAM
IP: 85.70.88.–
Standalf0
Duch
15. 9. 2008   #19
-
0
-

Tak to mi taky prislo divny. Doporucil bych ti vykaslat se na SDL tutorial tady, protoze je uplne na prd. Na root.cz je lepsi, ale me se osvedcil: http://lazyfoo.net/SDL_tutorials/index.php. Sice je anglicky, ale vyplati se ucit se z nej.

Tedka nemuzu rozebirat kod, ale vecer podivam kdyz bude cas. BTW ten kod se mi moc nelibi, je to 5 pres 9...

Nahlásit jako SPAM
IP: 82.150.166.–
Smějte se a svět se bude smát s Vámi, plakejte a budete plakat sám.
Wizard0
Stálý člen
15. 9. 2008   #20
-
0
-

ono uz neni co rozoberat :) problem je na 100% v podmienke pri initalizacii SDL viz moj prispevok vysie

Nahlásit jako SPAM
IP: 85.216.182.–
vollf820
Stálý člen
15. 9. 2008   #21
-
0
-

Díky za váš čas,

dělam to jen v práci tak to zejtra zkusim . Uvidíme jestli je to v tý podmínce no ... snad jo ... a to by jen potvrzovalo, že tutoriály na tomhle sajtu jsou pěkně na houby (aspon co se týče SDL).

Nahlásit jako SPAM
IP: 85.132.191.–
vollf820
Stálý člen
16. 9. 2008   #22
-
0
-

Zdravím po ránu,

takže Wizard měl pravdu, bylo to přesně v tom. V tom tutoriálu ale chyba není takže nechápu jak se mi to tam dostalo kdyz sem to jen kopíroval. Možná už to opravili ale fakt nevim :( Každopádně díky.

Wizard napsal:
ono uz neni co rozoberat :) problem je na 100% v podmienke pri initalizacii SDL viz moj prispevok vysie

Nahlásit jako SPAM
IP: 91.195.106.–
vollf820
Stálý člen
16. 9. 2008   #23
-
0
-

Zdravím a jsem tu zas :)

Může mi někdo poradit s touhle chybou co to vypisuje??

1>MSVCRTD.lib(cinitexe.obj) : warning LNK4098: defaultlib 'msvcrt.lib' conflicts with use of other libs; use /NODEFAULTLIB:library
1>2.obj : error LNK2019: unresolved external symbol _IMG_Load referenced in function "int __cdecl DrawImage(struct SDL_Surface *,char *,int,int)" (?DrawImage@@YAHPAUSDL_Surface@@PADHH@Z)
1>C:\DATA\C++\SDL\2\Debug\2.exe : fatal error LNK1120: 1 unresolved externals



Pravděpodobně vím co někdo napíše - že chybí přilinkovaná knihovna nebo tak něco. Ale stahnul sem si SDL_image devel VC8 ze stranek uvedenych v tutorialu. Přilinkoval sem co se dalo, jak v Tools - Options - Project and Solution - VC++ Directories ... tak v Project - Properties - Configuration Properties - Linker - General tak uz vazne nevim. I to SDL_image.h sem zkopiroval do složky include v adresari VC v Program Files. Kód sem sice dávam taky ale nevim jestli bude chyba tam.

Nahlásit jako SPAM
IP: 91.195.106.–
16. 9. 2008   #24
-
0
-

Mas tam conflict. Jestli mas MSVS zkus prepnout Project config -> C/C++ -> code generation a tam musis prepnout Multi-threaded na Multi-threaded DLL.

Asi jsem to nepopsal uplne presne, MSVS ted nemam po ruce.

Nahlásit jako SPAM
IP: 78.102.164.–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
vollf820
Stálý člen
16. 9. 2008   #25
-
0
-

To sem tam měl. Nicméně sem tam vyzkoušel všechny 4 možnosti a píše to stále to samý.

Nahlásit jako SPAM
IP: 91.195.106.–
16. 9. 2008   #26
-
0
-

Jo, a nemas nactene zavislosti k funkci IMG_Load (to si musis zjistit co jsou, z hlavy ti to rozhodne nereknu)

Nahlásit jako SPAM
IP: 78.102.164.–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
vollf820
Stálý člen
16. 9. 2008   #27
-
0
-

Tak jeste me napadla jedna vec. Vkladam sem screeny jak mam nalinkovany ty knihovny, treba nekoho jeste neco napadne.

Nahlásit jako SPAM
IP: 91.195.106.–
16. 9. 2008   #28
-
0
-

Ptam se znova: Vis, odkud beres tu funkci IMG_load?

Nahlásit jako SPAM
IP: 78.102.164.–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
vollf820
Stálý člen
16. 9. 2008   #29
-
0
-

No z toho SDL_image.h ... Citace z tutorialu:

Nahrávání obrázků z disku

SDL umí nahrávat pouze obrázky ve formátu BMP, ale díky knihovně SDL_image, která se už stala de facto jeho součástí, může programátor používat i PCX, GIF, JPG, PNG, TGA, TIFF a další méně známé formáty. Stejně jako celé SDL je i SDL_image šířena pod licencí GNU LGPL.

Po přilinkování knihovny a vložení hlavičkového souboru SDL_image.h je možné volat funkci IMG_Load(), která vrací surface nahrávaného obrázku. Formát je detekován automaticky podle přípony, hlaviček apod.

SDL_Surface *SDL_LoadBMP(const char *file);
SDL_Surface *IMG_Load(const char *file);


Nahlásit jako SPAM
IP: 91.195.106.–
survik1
~ Moderátor
0
Posthunter
16. 9. 2008   #30
-
0
-

musíš načíst SDL_Image.lib nebo jak se ten soubor jmenuje.

A smaž prosím ty zdrojáky výše )edituj přípěvek), kdo se tady v tom má hrabat

Nahlásit jako SPAM
IP: 89.102.156.–
Život je jen hra, která se nedá vyhrát.
vollf820
Stálý člen
16. 9. 2008   #31
-
0
-

Myslíš jako načíst tím linkováním?? Jestli jo tak linkovat jdou jen cely adresaře.
Sorry za ty zdrojáky uz sem je smazal ...

Nahlásit jako SPAM
IP: 85.132.191.–
vollf820
Stálý člen
17. 9. 2008   #32
-
0
-

Brý ráno :)

Tak sem to vyřešil přidáním řádku #pragma comment (lib, "SDL_image.lib") ... někde sem čet že je to jako ruční linkování knihoven. Opravte mě jestli se pletu. Ale proč teda sakra si to VC nenajde tu knihovnu samo, kdyz v Options projectu zadam linkeru cestu k tomu adresáři, kde ta knihovna je?? Proto sem stále nechápal proč mi to nejede. Nebo to tak nefunguje??

Tak jako tak se to ted spustí, chybu to nepíše žádnou, ale obrázek to taky nevykreslí takže sem tam kde sem byl. Ach jo, jdu se v tom zas hrabat no.

Nahlásit jako SPAM
IP: 91.195.106.–
17. 9. 2008   #33
-
0
-

Do toho linkeru musis ty knihovny nekam primo vyjmenovat

Nahlásit jako SPAM
IP: 78.102.164.–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
survik1
~ Moderátor
0
Posthunter
17. 9. 2008   #34
-
0
-

To vollf82 : Tož jsem to psal omg. Linkování je z důvodu, aby se zbytečně nenačítali funkce, které nejsou nezbytné. Taky includuješ jen potřebné soubory a ne všechny.

Nahlásit jako SPAM
IP: 89.102.156.–
Život je jen hra, která se nedá vyhrát.
Troper
~ Anonymní uživatel
1 příspěvek
7. 11. 2009   #35
-
0
-

Fakt mega demence !!!! jako bych vsechno psal sam... http://www.libsdl.org/faq.php?action=listentries&category=2#20 docela hlupy nevite nekdo co dal ?

Nahlásit jako SPAM
IP: 88.102.177.–
sputnikone+1
Věrný člen
7. 11. 2009   #36
-
0
-

Co to?

Nahlásit jako SPAM
IP: 147.251.201.–
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, 27 hostů

Podobná vlákna

[SDL] Help — založil WraCkeR

SDL — založil survik1

SDL — založil Miro1701

SDL — založil survik1

Sdl c — založil marc_ramin

Moderátoři diskuze

 

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