All blog entries, ordered from most recent. Entry count: 1198.
# Prezentacja o J2ME
Sun
30
Dec 2007
Właśnie skończyłem pisanie mojej pracy egzaminacyjnej na jeden z przedmiotów na studiach. Jest to prezentacja do wykładu na temat J2ME, czyli programowania w języku Java midletów na komórki. Omawia bardziej lub mniej dokładnie wszystkie moduły wchodzące w skład standardu MIDP 2.0. Ma 98 slajdów. Nie wiem, czy z samej prezentacji - nie słysząc wykładu - można się dużo nauczyć, ale zapraszam do przeglądania:
Comments | #productions #studies #mobile #java #teaching Share
# The Final Quest 7 - Kod źródłowy na GNU GPL
Fri
28
Dec 2007
Oto spóźniony prezent świąteczny - upubliczniam kod źródłowy mojego silnika na licencji GNU GPL. Nic mi przecież od tego nie ubędzie :)
To nie jest kompletny kod i nie skompiluje się tak po prostu, ale są tam prawie wszystkie klasy silnika, a także źródło i binarka konsolowego narzędzia do przetwarzania tekstur, map i modeli, pełna dokumentacja wszystkich formatów plików i inne rzeczy.
Mam nadzieję, że nikt nie będzie używał tego kodu nielegalnie w zamkniętej produkcji ani tym bardziej twierdził, że sam jest jego autorem. Tym nie mniej nie pogniewam się, jeśli ktoś "pożyczy" sobie z niego jakieś drobne funkcje albo podpadtrzy jakieś sprytne rozwiązania. Chociaż tyle będzie z niego pożytku :)
Pobierz plik: TFQ7_1-1_src.zip (1005.78 KB)
Pełna lista tego co zawiera pakiet: TUTAJ
Comments | #productions #rendering #engine Share
# Komórki, J2ME, M3G
Tue
25
Dec 2007
Dobra, poddaję się. Nie chce mi się już zajmować programowaniem na komórki. To jest fajne, ale mam też inne rzeczy w planach. Poznałem MIDP 2.0 i M3G dość dokładnie, zwłaszcza od strony teoretycznej. W praktyce dobił mnie problem z siatką o aktualizowanej dynamicznie geometrii (początkowo ma wszystkie wierzchołki w (0,0,0)), która na emulatorze działa dobrze, a na moim telefonie znika, kiedy tylko punkt (0,0,0) przestaje być w polu widzenia.
Z tego mojego "zajmowania się" pozostaną dwie pożyteczne rzeczy. Pierwsza to CapsViewer - mały midlet do pokazywania możliwości sprzętowych telefonu, na którym działa (parametry wyświetlacza, ilość pamięci, możliwości grafiki 3D itd.).
Druga to diagramy klas, który pomogły mi wyobrazić sobie organizację API M3G. Ta biblioteka jest przemyślana, przyjemna, obiektowa i wysokopoziomowa, ale co za tym idzie składa się z bardzo wielu drobnych, powiązanych ze sobą klas. Może komuś kiedyś przydadzą się te diagramy...
Comments | #rendering #java #mobile Share
# Wesołych Świąt
Sun
23
Dec 2007
Chciałbym ułożyć jakieś ładne życzenia, ale nie potrafię, a nie chcę kopiować gotowych. Dlatego życzę wam wszystkim po prostu WESOŁYCH ŚWIĄT I SZCZĘŚLIWEGO NOWEGO ROKU !!!
Comments | #life #events Share
# Nauka M3G
Fri
21
Dec 2007
Uczę się ostatnio M3G (Mobile 3D Graphics API). To jest biblioteka do mobilnej grafiki 3D wspierana przez niektóre komórki. Oprócz możliwości rysowania wprost oteksturowanych trójkątów posiada również API wysokopoziomowe z grafem sceny zawierającym siatki, kamery i światła. Wspiera animację na klatkach kluczowych oraz szkieletową. Ogólnie jest bardzo przyjemna.
Ma własny format pliku potrafiący przechowywać cały graf sceny wraz z teksturami. Długo szukałem sposobu na wyeksportowanie do niego czegoś z Blendera. Byłem nawet gotów napisać własny eksporter. Na szczęście dzisiaj po rozmowie na IRC-u z ludźmi z kanału #blendercoders przejrzałem źródło istniejącego eksportera M3G do Blendera i udało mi się go wreszcie nakłonić do prawidłowego działania. Tajemnicą nakłonienia go do eksportowania koordynatów tekstur jest, jak się okazuje, zaznaczenie w ustawieniach materiału niepozornego przycisku TexFace.
Co do samego midletu, na razie napisałem tyle :)

Comments | #rendering #java #mobile Share
# Bloom jest wszędzie
Mon
17
Dec 2007
Efekt zwany Bloom jest wszędzie, nie tylko w nowoczesnych grach komputerowych. Ostatnio widziałem go nawet na tle jakiejś prezentacji PowerPoint. Nic dziwnego - jest fajny, bo pozwala pokazać, że coś jest "jaśniejsze niż białe". To trochę rekompensuje wąski zakres jasności możliwy do odwzorowania na monitorze w porównaniu z zakresem, jaki widzimy w realnym świecie (HDR). Tak jak w tym moim prostym eksperymencie:

Comments | #rendering #graphics Share
# AMD CodeAnalyst
Sat
15
Dec 2007
Właściwie to używam go od dawna, ale teraz pomyślałem, że warto go "zareklamować" tym którzy jeszcze go nie znają. AMD CodeAnalyst to daromwy profiler. Instaluje się go, uruchamia, a następnie z jego poziomu odpala swoją aplikację i przez jakiś czas pozwala jej działać. Potem dostaje się statystyki, które pomagają stwierdzić, co zabiera najwięcej czasu. Na procesorach firmy AMD program ma co prawda większe możliwości, ale na Intelach również działa podstawowa funkcjonalność profilowania. Oto efekt:

Które moduły zabierają najwięcej czasu

Które funkcje wybranego modułu zabierają najwięcej czasu

Które linijki wybranej funkcji zabierają najwięcej czasu
Comments | #tools #software Share
# Visual C++ a procesor dwurdzeniowy
Thu
13
Dec 2007
Jako szczęśliwy posiadacz maszyny z dwurdzeniowym procesorem postanowiłem pomyśleć o przyspieszeniu kompilacji w Visual C++ 2005 i oto, do czego doszedłem po "dialogu" z Google.
Po pierwsze zła wiadomość: Visual C++ nie potrafi kompilować równolegle wielu plików. Właściwie to potrafi (za liczbę równoległych kompilacji odpowiada ustawienie Tools > Options > Projects and Solutions > Build and Run > maximum number of parallel project builds), ale tylko kiedy kompilujemy na raz wiele projektów z jednej solucji.
Po drugie, znalzłem coś takiego: IncrediBuild. Niestety, to jest program płatny, a w dodatku służy raczej do rozpraszania kompilacji na wiele komputerów. Nie o to nam chodzi.
Po trzecie, istnieje mały i darmowy dodatek do Visual C++ zrównoleglający kompilację na wiele plików jednocześnie - MPCL. Wypróbowałem go.
Po czwarte i najważniejsze, istnieje przełącznik kompilacji /MP, który sprawia, że Visual C++ automatycznie zrównolegla kompilację pojedynczego pliku znacznie ją przyspieszając. Nie znajdziesz tego przełącznika jako pozycji na listach opcji projektu. Musisz go ręcznie dopisać w C/C++ > Command Line > Additional Options. Też go sprawdziłem.
Oto wyniki moich eksperymentów. W trybie Release kompilacja trwa o wiele dłużej, bo dochodzi stały, duży czas linkowania, którego nie da się zrównoleglić.
Wnioski: 1. Użycie przełącznika /MP daje duże przyspieszenie kompilacji. 2. Użycie programu MPCL nie daje dalszego przyspieszenia, choć zastosowanie jego samego, bez przełącznika /MP, również przyspiesza kompilację tak jak ten przełącznik.
Wniosek wniosków: Programu MPCL nie warto instalować, natomiast warto zawsze stosować przełącznik /MP, bo znacznie przyspiesza kompilację na maszynie wielordzeniowej.