Monday, May 25, 2009

Ciężki błąd

No więc tym razem podziele się swoimi doświadczeniami z walki nad pewnym błędem. Poszukiwałem go już od dłuższego czasu. Efekt jego działania widać po lewej stronie na górze. Na dole pokazane jest jak powinnien wyglądać ten ekran. 

Sytuacja taka zdażała się tylko na nietórych komputerach. W moim przypadku zaobserwowałem to na 2 laptopach ze zintegrowaną kartą graficzną intela oraz systemem M$  Vista. Osobiście posiadam również lapka z wymienionymi parametrami ale u mnie błąd o dziwo się nie pojawił.

Pierwsze moje przypuszczenia dotyczyły naruszenia pamięci. Kiedyś miałem podobne objawy w takiej sytuacji. Wyszedłem jeden element poza tablice i u kolegi na kompie znikał jeden z paneli w grze. Jednak po przeszukaniu całego kodu, napisania managera pamięci oraz sprawdzenia go narzędziami do poszukiwania wycieków nie udało mi się odnaleźć przyczyny.

Zacząłem więc testowanie poszczególnych fragmentów gry. Okazało się że wyłączenie jednej z animacji w grze (dokładniej jej rysowania lub ładowania textury) powodowało że gra zaczynała działać normalnie. No więc poprawiłem dla pewności cały system animacji ale również to nie pomogło.  W końcu trochę zrezygnowany napisałem podgląd załadowanych tekstur aby przejrzeć wszystkie textury okazało się że jedna z textur na kompie gdzie jest błąd wygląda inaczej niż na pozostałych. 

Ogólnie podsumowując błędem okazało się rozszeżenie OpenGL'a większość textur ładuję z formatu dds który podaje mi format jaki mają mieć textury. Pozostałe (PNG,TGA itp.) ładowałem do open GL'a: GL_ARB_texture_compression  przy pomocy tego rozszeżenia.  Jak się okazało mimo, iż rozszeżenie takie było dostępne to musiało być obsługiwane inaczen niż na reszcie komputerów. 

No i na poszukiwanie takiego małego błędu zeszło mi ostatnio naprawdę dużo czasu . :]

No comments:

Post a Comment