All Blog Entries

All blog entries, ordered from most recent. Entry count: 1198.

Uwaga! Informacje na tej stronie mają ponad 6 lat. Nadal je udostępniam, ale prawdopodobnie nie odzwierciedlają one mojej aktualnej wiedzy ani przekonań.

Pages: > 1 ... 101 102 103 104 105 ... 150 >

# Game Programming Gems TOC

Wed
30
May 2007

Jako szczęśliwy posiadacz wszystkich sześciu tomów kultowej książki "Game Programming Gems" (trzy pierwsze tomy przetłumaczone i wydane po polsku przez Helion jako "Perełki programowania gier") często do nich zaglądam. Żeby ułatwić znalezienie konkretnego artykułu, podjąłem się zebrania spisów treści wszystkich tomów ze strony Game Programming Gems (tytuły rozdziałów w języku angielskim) i tak powstał plik GameProgrammingGemsTOC.html - zapraszam do korzystania.

Comments | #literature #teaching Share

# Pytanie o inteligentne wskaźniki

Mon
28
May 2007

Chcę sobie napisać tzw. inteligentne wskaźniki (po to żeby, przyznaję, uwolnić się od biblioteki Boost :) W związku z tym będę wdzięczny każdemu kto potrafi i znajdzie chwilę żeby odpowiedzieć na moje pytanie z tym związane w odpowiednim wątku forum.

Comments | #c++ #algorithms Share

# IntToStr, StrToInt

Fri
25
May 2007

Na dobry koniec dnia wyniki pomiaru wydajności moich nowych funkcji do konwersji między liczbą a łańcuchem - porównane z funkcjami systemowymi (plus konwersje do std::string, bo takich łańcuchów wszędzie używam i takich używają te moje funkcje). Wyniki w mikrosekundach na pojedyncze wywołanie, już podzielone przez liczbę wykonanych iteracji.

- DEBUG
  - int > string
    itoa : 0.244895 us
    IntToStr (stary) : 3.20974 us
    IntToStr (nowy) : 0.659205 us
  - string > int
    atoi : 0.270027 us
    StrToInt : 0.391424 us
- RELEASE
  - int > string
    itoa : 0.137373 us
    IntToStr (stary) : 0.225465 us
    IntToStr (nowy) : 0.134297 us
  - string > int
    atoi : 0.0785857 us
    StrToInt : 0.0589072 us

Comments | #c++ #algorithms Share

# Signed czy unsigned

Fri
25
May 2007

Czy do zapisywania rozmiaru danych, liczby bajtów, liczby elementów albo indeksu lepiej stosować liczbę całkowitą ze znakiem, czy bez znaku? Liczby ze znakiem są standardem w Delphi i mają wielu zwolenników dzięki swoim zaletom: Indeksy ujemne, jako niepoprawne, można stosować do oznaczenia wartości specjalnej (np. -1). Nie ma też obawy o "przekręcenie" przy zliczaniu w dół.

Ja jestem jednak zwolennikiem podejścia obowiązującego w C++, czyli stosowania typu bez znaku tam gdzie to możliwe (np. pod nazwą: unsigned, size_t, DWORD czy mój własny uint4). Zaleta tego podejścia to m.in. dwa razy większy dostępny zakres. Nie trzeba też sprawdzać poprawności liczby od dołu - wystarczy od góry. Jako wartości specjalnej można używać 0xFFFFFFFF (taką wartość ma na przykład stała std::string::npos zwracana przez std::string::find kiedy nic nie znaleziono).

Co wtedy z przechodzeniem tablicy w dół? Sposobem na to jest tzw. Pętla Tarlandila (tak sobie ją nazywam, bo nauczył mnie jej Tarlandil):

for (size_t i = RozmiarTablicy; i--; )
{
  Tablica[i] = 0;
}

Jak chcesz to przeanalizuj dokładnie jak działa ta sprytna pętla, a jeśli nie, to uwierz na słowo że ona naprawdę przechodzi tablicę w dół od elementu ostatniego do pierwszego i nie straszne jej przekręcenie się liczby bez znaku poniżej zera :)

Comments | #c++ #philosophy #algorithms Share

# Rzucanie wyjątków w destruktorze

Fri
25
May 2007

W języku C++ jest zasada, że nie należy rzucać wyjątków w destruktorach. Destruktor to jedyny kod, który może zostać wykonany kiedy wyjątek leci - został już rzucony, a nie został jeszcze złapany. Dzieje się tak dla obiektów utworzonych na stosie. Nie może być na raz dwóch wyjątków. Kiedy jeden leci i drugi zostaje rzucony, program się wysypuje.

Jednak czy na pewno to jest dokładnie tak? Co jeśli od czasu do czasu chcielibyśmy zrobić w destruktorze coś więcej niż tylko zwolnić pamięć, na przykład otworzyć na chwilę jakiś plik za pomocą własnej klasy strumieni, która w przypadku błędu rzuca wyjątek?

Tu będzie dobra wiadomość: MOŻNA rzucać wyjątek w destruktorze i mimo że jeden już leci, ten drugi nie spowoduje wysypania programu o ile zostanie w porę złapany i nie wyleci poza destruktor! Nie daję głowy że tak jest zawsze (nie należę do tych "językoznawców", którzy z pasją studiują standard języka uważając go za cel sam w sobie), ale sprawdziłem to na trzech kompilatorach: Visual C++ 2005 Professional, GCC 4.1.2 oraz Intel ICC 9.1.

Comments | #c++ Share

# Kolorowanie składni HLSL

Mon
21
May 2007

Kolorowanie składni HLSL

Pisząc od czasu do czasu shadery zauważyłem, że składni języka HLSL nie koloruje nic oprócz nVidia FX Composer i ATI RenderMonkey. Istnieje wprawdzie możliwość wprowadzenia takiego kolorowania do Visual C++, ale jest to paskudne obejście, które tak naprawdę zmusza Visual do traktowania plików FX jako kodu C++ i nowe słowa kluczowe koloruje również w kodzie C++. Dlatego nawet nie będę go tu podawał.

Zamiast tego napisałem wczoraj własny schemat kolorowania składni plików FX (w tym preprocesor, język HLSL i asembler shaderów do wersji 3.0) dla najlepszego edytora tekstu na świecie, czyli jEdit :) Wszystkich żądnych kolorków i niezniechęconych faktem, że ten program jest w Javie (to naprawdę jego jedyna wada) zachęcam do pobrania: hlsl.xml (20 kB). Instrukcja instalacji znajduje się w komentarzu wewnątrz pliku.

Comments | #rendering #software #productions Share

# Windows PowerShell 1.0

Sun
20
May 2007

Windows PowerShell 1.0 [Wikipedia]

Windows PowerShell 1.0 to kolejne warte uwagi znalezisko. To nowa powłoka systemowa dla Windows XP SP2 lub nowszych, zupełnie inna niż standardowy "cmd". Choć używa tego samego GUI konsoli, w środku posiada ogromny potencjał. Zobacz choćby stronę Comparison of computer shells aby przekonać się, że nie brakuje jej autouzupełniania, tablic haszujących, wyrażeń regularnych ani niczego, co powinna mieć dobra powłoka.

PowerShell przeznaczony jest wprawdzie dla administratorów i jako taki niezbyt mnie interesuje ani też nie mam pomysłu jak dobrze go wykorzystać, jednak zachwyciła mnie jego koncepcja. Sam w sobie nie posiada zbyt wiele - jest raczej platformą do dowolnej rozbudowy. Pozwala za to na tworzenie i używanie obiektów .NET, COM oraz WMI. Wiele jego elementów jest zaczerpniętych z Uniksa - jak choćby wygląd manuali. Posiada własną, całkiem przyjemną składnię. Jego obsługa jest bardzo intuicyjna i prosta do opanowania, polecenia dzielą się zasadniczo na grupy takie jak Add-, Remove-, Convert-, Out-, Format-, Write-, Set-, Get-, drzewo katalogów jest uogólnione na możliwość poruszania się po rejestrze systemowym, bazie certyfikatów itp. Jednak najgenialniejsze jest to, że dane przekazywane przez potok między poleceniami są nie surowym tekstem, ale kolekcją obiektów .NET!

Comments | #windows #tools Share

# MaPZone 2.5 - Generowanie tekstur

Sun
20
May 2007

MaPZone 2.5 to znalezisko warte uwagi - bardzo potężny program do proceduralnego generowania tekstur. Z jego użyciem każdy, kto lubi bawić się funkcjami, ma odrobinę zmysłu artystycznego (?) oraz szczyptę wytrwałości, żeby opanować jego interfejs może generować naprawdę realistyczne tekstury, łącznie z kanałem alfa czy osobną normal mapą. Tym bardziej, że program jest darmowy, a dołączonych do niego licznych, przykładowych tekstur wolno używać w swoich produkcjach, nawet tych komercyjnych.

Comments | #graphics #tools Share

Pages: > 1 ... 101 102 103 104 105 ... 150 >

[Download] [Dropbox] [pub] [Mirror] [Privacy policy]
Copyright © 2004-2026