(1) OpenGL w C++
Najważniejsze - daje możliwość wizualizacji danych wymagających przestrzeni trójwymiarowej. Bla bla bla E tam, oczywiście że to niesamowite i jakie szybkie (spadł z krzesła!!).
Wystarczy znać np. C, OpenGL jest strukturalny i mówią - dobry na początek (myśląc o DirectX), szczególnie dla znających programy typu 3D Studio Max.
(2) Tutoriale
Czyli to, czego większość poszukują... tutorials - i.e. how to copy and paste theirs codes without any understanding
- Szybkie metody rysowania obiektów - Vertex Buffer Objects
- Tekstury z plików graficznych JPG, GIF, PNG... - przy użyciu biblioteki Corona
- Dźwięk z plików WAV, OGG, MP3 itp - przy użyciu biblioteki Audiere
Linki do innych
(3) Dev C++ + wxDev ++ OpenGL
Kilka materiałów dotyczących sposobu połączenia OpenGLa wraz z okienkami, przyciskami i innymi kontrolkami.
Środowisko, wstęp
- DevC++
- darmowe, otwarte środowisko z solidnym kompilatorem gcc
- wxDev-C++
- darmowy i otwarty dodatek do środowiska Dev który umożliwia tworzenie aplikacji okienkowych, nakładka na deva, która pozwoli ominąć programowanie windows api na najniższym poziomie
(podczas instalowania, autorzy radzą, aby odinstalować poprzednie wersje dev-a, wxdeva).
- Opengl w wxDev-C++ - wstęp, prosta aplikacja okienkowa z wykorzystaniem OpenGL'a. Otóż, możemy oczywiście pisać w czystym C++ bez okienek OpenGLu, ale gdy zachodzi potrzeba pracowania z kontrolkami, utworzenia buttonów, paneli... cóż zrobić. I albo się sprzedać builderowi, albo visualowi albo pracować w otwartym xwDevie. Oczywiście zawsze zostaje czysty windows api - dla prawdziwych coderów.
(4) CG Language, Vertex shaders, Pixel shaders
Nadszedł czas na shadery, o ile będzie więcej materiałów - umieścimy je w oddzielnym dziale, narazie niech siedzą tutaj.
- Pierwszy program CG (source in C++, OpenGL, dev project)- napisany na podstawie przykładów CG Users' manuala. Przykład użycia Vertex i Pixel (Fragment) Shadera z obsługą texturowania.
Linki:
(5) Linki, ciekawe strony
(6) Projekty, dokumenty, pliki
Większość programów przygotowanych jako projekty środowiska Dev C++ w wersji 4.9.9.2 (dla Windows)
-
Engine gry 3D
Uwaga!! Poszukuje osób chętnych do kontynuacji tworzenia gry (szczególnie pod kątem grafiki 3D, dźwieku itp)
Prosty engine gry 3D:
- Konwerter plików OBJ do wewnętrznego formatu (optymalizacja ładowania)
- Optymalizacja wyświetlania sceny (Octree, Display Lists, Frustum culling)
- Ładowanie plików postaci MD3 (Quake 3)
- Detekcja kolizji (RayPlane, Box, AABB)
- Kamera kolizyjna TPP, FPP
- Obsługa JPG,TGA,BMP,GIF itp. (biblioteka corona)
- Obsługa WAV,Mp3 itp. (biblioteka audiere)
- Proste systemy cząsteczkowe (pociski, wybuchy, sprites)
- Szablon.zip - pierwszy program w OpenGL
Aby zacząć korzystać z funkcji OpenGL, trzeba najpierw przedrzeć się przez gąszcz funkcji Windowsa, choćby tylko po to, aby wywołać puste okienko.
Na początku większość z tego jest mało istotna, dlatego powyższy szablon załatwia sprawę. Mamy tam dwa pliki:
szablon.dev - projekt dla środowiska Dev-C++
opengl.cpp - z funkcjami opengl-a i windows api do wywołania okienka
main.cpp - tu jest główna funkcja rysująca, z którą będziemy dalej pracować
Po skompilowaniu, program nie robi nic interesującego, dlatego potraktujmy to jako szablon do kolejnych programów z OpenGL.
- Tekstury.zip - teksturowanie obiektów
(Projekt w środowisku Dev-C++ : source)
Szablon prostego programu w OpenGLu umożliwiającego ładowanie plików BMP i nakładanie ich na obiekty, (W tym przykładzie na sferę)
obsługuje prostą kontrolę sceny (obracanie, zoomowanie za pomocą klawiatury).
- Thread.zip - OpenGL + Cząsteczki + Wątki WinAPI
(Projekt w środowisku Dev-C++ : source + binary)
Wątki - może to nie najszybsze metody do grafiki, ale jakże intuicyjne (i proste) - czyli wykonywanie wielu procedur w jednym czasie na tej samej przestrzeni pamięci.
Jedna funkcja można zając się obracaniem sceny, inna modyfikacją jej elementów. W przykładzie tym stworzyliśmy prostą strukturę cząsteczek zawierających położenie
i kolor - stworzymy wątek dla każdej z nich, który będzie zmieniał wysokość cząstki sinusoidalnie...
- Tree v1 - binary and source in C++ - screen: 01,02
Właściwie był to pretekst do użycia struktury danych: drzewa. Każdy wierzchołek jest elementem listy i (jeśli nie jest liściem) wskazuje na listę kolejnych wierzchołków (o poziom wyżej) itd..
Program używa dostępnej z Windowsem biblioteki opengl32.dll i został skompilowany w Dev-C++ 4.9.9.1. Uwaga: Po włączeniu programu wciśnij F1 aby zobaczyć listę możliwych działań.
- Poruszanie się po scenie 3D - binary and source in C++ (zip 3.5MB) - screen: 01,02
Jest to próba stworzenia prostego enginu gry 3D, dopiero teraz zdaje sobie sprawę, jak to wszystko działa, ba... ale jak oni to robią, że to tak szybko chodzi (patrząc na złożoność scen), dalej nie wiem.
(Tam, gdzie korzystałem z kodów (m.in tutoriali NeHe), nie usuwałem informacji o ich autorach, źródle)
A projekt zawiera już m.in:
- porszanie się po scenie 3d
- detekcje kolizji ruchu postaci
- detekcje kolizji cząsteczek (pociski) 3D
- ładowanie obiektów formatu 3ds
- Fraktale z R4 - binary and source in C++ - screen: julia1.gif,julia9.gif
Program generujący Zbiór Mandelbrota i Julii w przestrzeni R4 !!! Czyli zamiast liczb zespolonych wykorzystujemy
Kwaterniony. Program najpierw wyszukuje tych punktów, które tworzą owe zbioru, nastepnie dodaje je na listę, którą wyświetla jako punkty. Punkty są sortowane
dlatego można ustawić, aby wyświetlał fraktale jako płaszczyzny, linie łamane itp..
- Kwaterniony - source and binary C++ -
Mała aplikacja pokazująca zastosowanie kwaternionów do obrotów w przestrzeni trójwymiarowej
oraz wyznaczania tzn. SLERP (Spherical Linear intERPolation), punktów przejściowych między dwoma obrotami w przestrzeni 3D. Zastosowania: m.in. do kamer third person (stosowane już w Tomb Raiderze I,II)