# Asercja - int 3
Sat
26
Jul 2008
Ciekawostka: Instrukcja asemblerowa wywołująca przerwanie int 3 może posłużyć jako asercja. Działa tak: Jeśli program jest uruchomiony z poziomu debuggera, przerywa jego wykonywanie tak, jakby w tym miejscu w kodzie postawiony był Breakpoint ("Program.exe has triggered a breakpoint"). Można podglądać stos wywołań programu czy wartości zmiennych. Potem można go kontynuować. Jeśli natomiast uruchomiony jest bez debuggera, wysypuje się z błędem krytcznym. Można sobie napisać na przykład takie makro:
#ifdef _DEBUG #define MY_ASSERT(x) { if ((x) == 0) { _asm { int 3 } } } #else #define MY_ASSERT(x) { } #endif
Comments | #c++ #visual studio Share
# Fajny błąd Visual C++
Fri
25
Jul 2008
Visual C++ to świetne środowisko programistyczne, moim zdaniem najlepsze. Ale nawet w nim zdarzają się błędy. Czasami bardzo śmieszne.
Clean Solution i rekompilacja nie pomogła. Na szczęście restart programu pomógł :)
Comments | #visual studio Share
# Konfiguracja Visual C++ dla AssistX
Thu
24
Jul 2008
Visual AssistX jest fajny, o czym już pisałem. Po jego zainstalowaniu warto zrobić małą konfigurację swojego Visual C++ (mówię o wersji 2005, nie wiem jak jest z 2008).
Po pierwsze, wyłączamy Navigation bar, bo nad polem z kodem wystarczy nowy pasek AssistX, niepotrzebne są dwa. W tym celu trzeba wejść do Tools > Options... > Text Editor > C/C++ > General i oznaczyć pole Navigation bar.
Po drugie, warto wyłączyć Visualowy IntelliSense. Ten szwankujący mechanizm podpowiadania jest całkowicie zastąpiony przez lepszy od niego AssistX, a to on podobno zamula środowisko bardziej, niż ten dodatek. Niestety nie ma sposobu, żeby wyłączyć go w opcjach. Trzeba się uciec do sztuczki - skasować lub zmienić nazwę pliku VC\vcpackages\feacp.dll leżącego w katalogu z zainstalowanym Visualem. (Dowiedziałem się o tym dzisiaj - pozdro KriS :)
Comments | #c++ #visual studio #tools Share
# Aqua Fish 2 - moja gra dla firmy Play
Sun
20
Jul 2008
Ukazała się oficjalna zapowiedź gry Aqua Fish 2, którą pisałem przez ostatnie miesiące. Konkretnie to ja byłem programistą, grafikę stworzył gemGreg, muzykę i dźwięki Mimper, a wydawcą jest firma Play. Gra wkrótce będzie dostępna w sklepach, zapewne w przystępnej cenie :D Ma niskie wymagania sprzętowe (nie używa shaderów). Jest adresowana dla dzieci. Właściwie należy do gatunku Pacmana :) Gracz steruje rybką, która pływa między przeszkodami, zbiera punkty i dodatkowe przedmioty, a unika wrogich stworów (albo je niszczy). Grafika jest trójwymiarowa i kolorowa. Gra toczy się w 6 różnych titlesetach.
Na YouTube jest do obejrzenia filmik z gry:
Comments | #games #productions #video Share
# std::vector wszędzie zamiast tablic
Thu
17
Jul 2008
Początkujący w C++ uczą się najpierw o wskaźnikach i dynamicznej alokacji pamięci, w tym tablic operatorem new[]. Dopiero potem poznają bibliotekę STL. Tymczasem klasy std::vector warto używać zawsze zamiast dynamicznych tablic. Ma wiele zalet: [+] sama zwalnia pamięć, nie grozi wyciekiem pamięci, [+] pamięta swój rozmiar, [+] potrafi się sama rozszerzać, [+] ma wygodne metody m.in. do wstawiania (insert) i usuwania (erase) ze środka. Wcale nie jest przy tym wolniejsza niż zwykłe tablice, o ile używa się jej prawidłowo. Na przykład tak:
class MojaKlasa { private: std::vectorm_Wektor; public: MojaKlasa() : // Rozmiar od razu na 128 m_Wektor(128) { // Wypełniam elementy, a nie dodaję for (int i = 0; i < 128; i++) m_Wektor[i] = i; } };
Najlepsze jest to, że wektor zawsze jest trzymany w pamięci jako zwykła tablica i można uzyskać do niej wskaźnik pobierając adres pierwszego elementu:
int *Tablica = &m_Wektor[0];
# Samurize - mój config
Tue
15
Jul 2008
Samurize to darmowy programik, który potrafi w panelu przyklejonym do pulpitu albo pokazywanym zawsze na wierzchu przedstawiać różne statystyki z pracy komputera. Jest bardzo elastyczny i prosty w obsłudze dzięki graficznemu edytorowi konfiguracji. Do zaprojektowanego przez siebie panelu można wstawiać różnego rodzaju mierniki, w szczególności dowolny systemowy Performance Counter. Konfig, z którym ja nie rozstaję się już od ponad 3 lat, wygląda tak:
Siedzi sobie w prawym górnym rogu ekranu i mierzy kolejno:
Dzięki temu zawsze jeden rzut oka wystarcza, żeby wiedzieć, co się dzieje w komputerze. Na przykład na pokazanym obrazku przed chwilą pracował procesor, a obecnie coś ściąga się z Internetu. Jeśli też chcesz mieć taki miernik, możesz ściągnąć ten mój: Samurize - Config by Reg.ini.
# Moje zdjęcia z Warszawy
Sun
13
Jul 2008
Wrzuciłem do Galerii zdjęcia, które zrobiłem dotychczas w Warszawie.
# Pracuję w Metropolis Software
Sat
12
Jul 2008
Dawno nie pisałem tu nic konkretnego. Co u mnie nowego? Właściwie wszystko. Mieszkam teraz w Warszawie i pracuję jako programista w Metropolis Software. Nie jest tajemnicą, że projekt który obecnie tworzymy to strzelanka zatytułowana They.
# Wygrałem konkurs na blog IT miesiąca
Fri
11
Jul 2008
Zająłem pierwsze miejsce w konkursie na blog IT miesiąca. Kompletnie się tego nie spodziewałem. To nie było głosowanie internetowe, blogi oceniało jury na podstawie określonych kryteriów. Liczyły się tylko wpisy z czerwca tego roku. Nie wiem wprawdzie jak duża była konkurencja, ale zapisałem się do niego ot tak, z ciekawości. Wcale nie blogowałem specjalnie pod konkurs. Byłem przekonany, że ze swoją egzotyczną tematyką programowania gier nie mam szans z blogami na tematy internetowo-bazodanowe związane z Java, C#, PHP itp., których pełno w sieci i które zwykle mamy na myśli mówiąc "IT". A jednak stało się i wygrałem książkę... "Aplikacje Windows Forms .Net w C#" :) Drugie miejsce w konkursie zajął Xion.
Comments | #web #homepage Share
# Moja praca mgr online
Tue
01
Jul 2008
Za pozwoleniem promotora udostępniam do pobrania moją pracę magisterską w formacie PDF: Architektura i implementacja silnika grafiki trójwymiarowej. Praca opisuje mój silnik graficzny The Final Quest. Zawiera przegląd literatury, opis architektury silnika (z jakch warstw, modułów, klas i pól się składa) oraz szczegóły implementacyjne (organizacja procesu renderowania, omówienie kodu shaderów, obliczenia animacji szkieletowej, realizacja efektów cząsteczkowych, format plików modeli i inne).
Jednym słowem, zbiera dużą część mojej wiedzy na tematy silnikologiczne, jaką miałem w czasie jej pisania. Ma 165 stron. Zawiera też obszerny spis literatury - ciekawych artykułów na konkretne tematy. Powinna być zrozumiała dla tych wszystkich, którzy znają już podstawy programowania, biblioteki graficznej 3D oraz shaderów.