AGE

21 04 2008

Niestety nie było mnie stać na wymyślenie jakiegoś ciekawego tytułu notki więc niestety jest jaki jest… Ale nie tytuł jest najważniejszy! Zebraliśmy się tutaj, aby dowiedzieć się czegoś na temat tego co dzieje się z AGE.

Na początek – postanowiłem wreszcie porzucić zestaw GEdit+Makefile na rzecz środowiska Code::Blocks. Na początku w GEdicie było fajnie, ale niestety w miarę jak rozrastał się projekt przestał mi wystarczać taki zestaw ^^

Drugą, równie ważną, sprawą, jest to, że sprawdziłem wczoraj wieczorem (ok – w nocy) czy AGE skompiluje się pod Windowsem. Bałem się, że nie będzie to należało do przyjemnych doświadczeń. Jak się okazało – nie taki diabeł straszny jak go malują :) Najwięcej czasu zajęło mi ściąganie bibliotek SDL oraz Code::Blocks pod windowsa ;) Potem stworzyłem projekt, dodałem pliki z kodem źródłowym i włączyłem kompilację. Wyrzucił kilka warning’ów odnośnie porównywania signed-unsigned, i jeden błąd.

Okazało, się że w użyłem w jednym miejscu nazwy jaka istniała już jako definicja preprocesora w windows.h. Na szczęście poprawienie tego stanu rzeczy nie zajęło więcej niż minutę. Ponowna próba kompilacji i…. udało się :) AGE skompilowało się na Windows z drobnymi poprawkami!

Okazuje się, że decyzja o użyciu SDL+OpenGL była całkiem dobra – przynajmniej względem przenośności kodu. Osiągnąłem całkiem zadowalające efekty dość niskim kosztem.

Ech.. uruchomienie tego samego kodu i zobaczenie go w akcji w 2 systemach sprawia ogromną radochę ;) Polecam wszystkim wypróbowanie ^^


Operacje

Informacja

9 odpowiedzi

21 04 2008
krajek

Co to można powiedzieć, gratki :) . Aha, i oczywiście : pokaż demo ;].

21 04 2008
moriturius

@krajek: póki co – walczę z wydajnością :) Samo uruchomienie to dopiero cząstka sukcesu :P

21 04 2008
Xion

Takie uruchomienie to nic wielkiego – w wielu przypadkach wystarcza do tego wine ;-)

21 04 2008
moriturius

@Xion: Migracja była Linux->Windows tym razem :) Wine niewiele pomoże mi na windowsie :P Co ciekawe wydajność jest nie-za-wysoka na Windzie, a myślałem, że tam będzie lepiej… No cóż, trzeba pokombinować.

21 04 2008
krajek

Jeśli chodzi o 2d to nie za bardzo można optymalizować ;p. Używasz porządnie vbo?

22 04 2008
moriturius

@Krajek: nie chciało mi się specjalnie kombinować z rozszerzeniami. Wykorzystywałem do tego glDrawArrays, a później glCallLists (z odpowiednim buforowaniem list) – zysk był, ale na 500 obiektach był rzędu 2FPS :P To raczej średnio zadowalające. Chyba będę musiał spróbować tych odkładanych wiecznie na później VBO :P

22 04 2008
moriturius

@Krajek: sprawdziłem VBO. Okazuje się że wydajnościowo leżą dla grafiki 2D podobnie jak listy wyświetlania i rysowanie tablic. Zastanawiam się co jest powoden takiej wydajności – kiedy używałem Windows+DirectX miałem ze 2 razy więcej FPS przy czym rysowałem znacznie więcej obiektów… Niemożliwe, żeby OGL był aż tak wolny w stosunku do DX – coś tu jest nie tak ^^

22 04 2008
krajek

No to ja tez sprawdzę na dniach jak to jest rzeczywiście. Podaj najlepiej jak duże obiekty i jaką teksturę/tekstur używałeś. Ja zrobię to samo i jakoś porównamy wyniki.

22 04 2008
moriturius

@krajek: jak przystało na 2D używam tylko GL_TRIANGLE_FAN (razem 5 wierzchołków) i renderuję na tym teksturę 256×256 – obrazek PNG który ma trochę miejsca całkowicie transparentnego, a reszta jest tak w połowie widoczna. Renderuję to w wielkości 100×100 (pikseli) w ilości 100. Rozdzielczość (w okienku) jest 640×480 i FPS wynosi ~150.

Dodaj komentarz