Kurs OpenGL

Dobiesław Pałeczka

Ćwiczenie 1 – Szkielet programu

Stwórz nowy projekt. Zastąp zawartość głównego pliku cpp zawartością cw1.cpp. Nie zapomnij dodać do projektu odpowiednich bibliotek .lib oraz umieścić w odpowiednich miejscach pliki .h i .dll. Skompiluj program. Na ekranie powinny pojawić się dwa okna: pierwsze tekstowe, a drugie puste - jego wnętrze nie będzie odświeżane. Odszukaj w dokumentacji opis funkcji użytych w cw1.cpp. Odkomentuj komentarze i uruchom ponownie program. Na ekranie powinien pojawić się sześcian. Przeanalizuj odkomentowane instrukcje.

Ćwiczenie 2 - Stałe proporcje

Uruchom program cw1.cpp i za pomocą myszki zmień rozmiar okna. Gdy zmieniają się proporcje okna (początkowo było ono kwadratem), zmieniają się także proporcje wyświetlanego sześcianu - wyświetlany sześcian zostaje zwężony lub rozciągnięty w jednej z osi. Celem ćwiczenia 2 jest takie zmodyfikowanie programu cw1.cpp, aby niezależnie od kształtu okna proporcja osi x do y pozostała stała tj. wyświetlana bryła zachowała swoje pierwotne proporcje. Sześcian powinien też zmieniać swoją wielkość proporcjonalnie do zmiany rozmiaru okna.

Proponuje zastosować funkcje:

Porównaj swoje rozwiązanie z moim cw2.cpp.

Ćwiczenie 3 - Interakcja z użytkownikiem

Należy dodać obsługę klawiatury tak, aby klawisze a i z obracały sześcian wokół osi x. Sugestia: zadeklaruj zmienną globalną przechowują aktualny kąt obrotu.

Proponuje zastosować funkcje:

Zaimplementuj także możliwość obrotu figury w pozostałych osiach. Porównaj swoje rozwiązanie z moim cw3.cpp.

Ćwiczenie 4 - Rysowanie

Aby można było odróżnić ściany od siebie, na jednej z nich umieść mały sześcian odmiennego kolorze.

Proponuje zastosować funkcje:

Porównaj swoje rozwiązanie z moim cw4.cpp.

Ćwiczenie 5 - Operacje na macierzach

Oznakuj wszystkie ściany w podobny sposób jak w ćwiczeniu 4. Możesz zastosować tutaj inne bryły niż sześcian.

Użyj funkcje:

Porównaj swoje rozwiązanie z moim cw5.cpp.

Ćwiczenie 6 - Animacja

Zmodyfikuj tak poprzedni program, aby bryła obracała się samodzielnie wokoło jednej z osi bez naciskania jakiegokolwiek klawisza.

Zastosuj funkcję:

Porównaj swoje rozwiązanie z moim cw6.cpp.

Ćwiczenie 7 - Dwa widoki

Za pomocą glViewport(int x, int y, int w, int h) podziel okno na dwie części. W jednej z nich wyświetlaj bryły tak samo jak w poprzednim ćwiczeniu, a w drugiej wyświetlaj te same bryły, lecz widziane od tyłu - gluLookAt(-5,-5,-5,0,0,0,0,1,0).

Porównaj swoje rozwiązanie z moim cw7.cpp.

Ćwiczenie 8 - Display lists

Zoptymalizuj swój program używając:

Porównaj swoje rozwiązanie z moim cw8.cpp.

Ćwiczenie 9 - Drugie źródło światła

Dodaj drugie źródło światła o kolorze innym niż biały.

Zastosuj:

Porównaj swoje rozwiązanie z moim cw9.cpp.