.[ ČeskéHry.cz ].
DirectX - Aplikace neodpovídá

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> 3D API / 3D Enginy
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
Erlin



Založen: 06. 08. 2008
Příspěvky: 9

PříspěvekZaslal: 15. září 2008, 19:06:39    Předmět: DirectX - Aplikace neodpovídá Odpovědět s citátem

Ahoj, mám takový drobný problém. Dělám hru běžící na managed DirectX (můj první větší počin s grafikou) a .NET. Stává se mi, že mi najednou zčerná obrazovka/okno a systém označí aplikaci jako "Neodpovídá". Přesto kód na pozadí běží nerušeně dál, nebyla vyvolána žádná výjimka ani DirectX nevratil žádnou chybu.

Nejhorší je, že se to stává v náhodné okamžiky. Někdy po pár vteřinách v úvodním menu, někdy po dlouhých minutách ve hře. Občas se i stává, že se hra "vzpamatuje" a zase funguje normálně. Testoval jsem to na dvou odlišných PC, které jinak fungují dobře, takže chybu hardwaru apod. vylučuji.

Nevíte prosím někdo čím by to mohlo být? Předem díky za odpověď.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Augi



Založen: 28. 07. 2007
Příspěvky: 782
Bydliště: Čerčany

PříspěvekZaslal: 15. září 2008, 19:21:22    Předmět: Odpovědět s citátem

Jediné, co mě napadá, je zeptat se, jestli máš ošetřenou ztrátu zařízení (lost device). Jinak bych to spíše viděl na chybu v Tvém kódu...s takovýmhle chováním jsem se nikdy nesetkal...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Erlin



Založen: 06. 08. 2008
Příspěvky: 9

PříspěvekZaslal: 15. září 2008, 19:27:59    Předmět: Odpovědět s citátem

Ano, mám ošetřeno DeviceReset, DeviceLost i DeviceResizing. Začínám být z toho už zoufalý.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Augi



Založen: 28. 07. 2007
Příspěvky: 782
Bydliště: Čerčany

PříspěvekZaslal: 15. září 2008, 19:34:29    Předmět: Odpovědět s citátem

Tak pak nezbývá než začít řešit klasickým způsobem...zakomentovat co nejvíce kódu až zbude jen základní smyčka, přidat logování a zkusit přesně zjistit, kde se to kousne (v jakém místě kódu)...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Erlin



Založen: 06. 08. 2008
Příspěvky: 9

PříspěvekZaslal: 15. září 2008, 19:43:16    Předmět: Odpovědět s citátem

No to je právě ten problém, protože aplikace se nekousne, ona běží dál. Ale obrazovka je černá a Win mi po chvíli nabídne, abych ukončil program.

Komentoval jsem a ořezal co se dalo - vykresloval jsem pouze kurzor, nic víc to nedělalo a stejně se to stalo. Naopak, jsem zkusil kurzor nevykreslovat a taky nic...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Deluxe



Založen: 31. 07. 2007
Příspěvky: 235
Bydliště: Oslavany

PříspěvekZaslal: 15. září 2008, 19:46:48    Předmět: Odpovědět s citátem

To prece neni mozny, aby to bezelo dal, kdyz ti win nabidne to ukonceni, tak to znamena, ze neodpovidas na winapi spravy okna ne?
jinak mozna bych na tohle zkusil pouzit profiler, abys videl, ktera funkce trva jak dlouho, pokud se nejakaj "kousne".
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Augi



Založen: 28. 07. 2007
Příspěvky: 782
Bydliště: Čerčany

PříspěvekZaslal: 15. září 2008, 19:48:38    Předmět: Odpovědět s citátem

Tak to bych zkusil dvě věci:
1) Pustit to na jiném počítači (jestli to není třeba problém driveru).
2) Zkusit založit nový projekt, překopírovat tam tu základní smyčku a zkusit pustit (pak nám tu klidně můžeš ten EXE vystavit a my to zkusíme pustit).
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Tringi



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

PříspěvekZaslal: 15. září 2008, 22:07:13    Předmět: Odpovědět s citátem

Nevím jak v .NETu ale při práci přímo s API tohle přesně nastává, když nezpracováváš zprávy včas. Když píšeš že ti hra "pokračuje", tak máš hlavní smyčku špatně. Nejspíš upřednostňuješ kód hry před zprávami Windows, přičemž bys měl dělat přesný opak. Postni kód té hlavní smyčky na nopaste a mrknem na to.
_________________
WWW | GitHub | TW
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Matasx



Založen: 17. 08. 2008
Příspěvky: 258

PříspěvekZaslal: 16. září 2008, 08:55:50    Předmět: Odpovědět s citátem

Já řeším smyčku běhu programu takto:
kód:
...
GameField.Tick((float)timebase);
Render();
Application.DoEvents();
Thread.Sleep(1);
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Erlin



Založen: 06. 08. 2008
Příspěvky: 9

PříspěvekZaslal: 16. září 2008, 12:40:36    Předmět: Odpovědět s citátem

Ok. Díky zatím za rady. Zkusím na jejich základě provést další serii testů atd. a když tak se zase ozvu případně sem pisnu, čím to bylo.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Erlin



Založen: 06. 08. 2008
Příspěvky: 9

PříspěvekZaslal: 23. září 2008, 15:35:59    Předmět: Odpovědět s citátem

Za poslední 2 dny pilného testování se to už nestalo ani jednou, takže to považuju za uzavřené.

Problém skutečně byl v nedostatečném zpracovávání zpráv Windows.

Díky všem za rady a pomoc.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> 3D API / 3D Enginy Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
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