Amiga MinusEskarina
<<  Spis treści  >>
OPENGL - KSIĘGA EKSPERTA
Od momentu gdy firma Phase5 obdarowała amigowców kartami graficznymi z akceleratorem 3D rozglądałem się za konkretną możliwością wykorzystania tego układu. Warp3D był dla mnie zbyt "niskopoziomowy" i bez niczyjej pomocy trudno mi było wejść przy jego pomocy w świat 3D. Wtedy to na horyzoncie pojawił się OpenGL (StormMESA). Pomimo tego, że jest to już znacznie wyższy poziom programowania, to bez odpowiedniej dokumentacji trudno jest stawiać pierwsze kroki. Oprócz suchych informacji dla kogoś "zielonego" przydałby się też kurs wyjaśniający podstawowe zasady programowania z użyciem bibliotek OpenGL. Zaczerpnąłem więc informacji na temat dostępnej literatury na temat OpenGL. Moje zdziwienie było ogromne gdy dowiedziałem się, że w Polsce ukazała się tylko jedna książka na ten temat i to całkiem niedawno. Książka nosi tytuł "OpenGL - księga eksperta" i została wydana przez znane amigowcom Wydawnictwo Helion. Bez dłuższego zastanowienia udałem się do EMPIK-u, gdzie pozbywając się 90 zł stałem się jej właścicielem.

Książka faktycznie robi wrażenie "księgi". Jest gruba (720 stron), oprawiona w twardą okładką i posiada solidnie pozszywane kartki. W środku wszystkie strony są czarno-białe. Właściwie w niczym to nie przeszkadza, bo nieliczne ilustracje to schematy, rysunki oraz zrzuty ekranów, w których kolory nie są istotne. Na końcu znajduje się bardzo przydatny w tego typu książkach skorowidz. Do książki dołączona jest płyta CD-ROM, zawierająca przykłady i inne rzeczy związane z windowsową implementacją OpenGL. Od strony formy książka robi bardzo dobre wrażenie.

Książka podzielona jest na 4 cztery części zawierające w sumie 24 rozdziały. Dla użytkowników Amig przydatne będą trzy pierwsze części, bo ostatnia jest już ściśle związana ze środowiskiem Windows. Właściwie cała książka jest przeznaczona dla "szerokiego grona programistów OpenGL i Windows", jednak dzięki uniwersalności standardu OpenGL coś dla siebie znajdą także użytkownicy innych systemów operacyjnych, na których istnieje OpenGL, a takim systemem jest AmigaOS. Dzięki uniwersalności OpenGL, czytelnik podczas czytania kolejnych rozdziałów często zapomina się, że autorzy przez cały czas mają na myśli środowisko Windows. Funkcje OpenGL w każdej implementacji są takie same, więc opisywane w książce przykładowe procedury bez żadnych przeróbek dają się skompilować i uruchomić na Amidze. Część przykładów zawiera trochę typowo windowsowych funkcji, ale na szczęście nie jest ich wiele i często daje się je zastąpić czymś bardziej "multiplatformowym". Nieliczne charakterystyczne dla windowsowej implementacji kawałki kodu nie przeszkadzają w nauce i zrozumieniu istoty problemu.

OpenGL nie jest językiem programowania. Jest to interfejs API (Application Programming Interface), którego funkcje muszą być wywoływane z poziomu jakiegoś innego języka programowania (np. C/C++). Autorzy zakładają więc, że czytelnik zna przynajmniej podstawy języka C.

Każdy rozdział zawiera krótkie wprowadzenie teoretyczne do omawianego zagadnienia. Potem następują zazwyczaj dokładnie opisane przykładowe fragmenty programów, pokazujące praktyczne zastosowanie opisywanych funkcji. Autorzy starali się, aby przykłady zawierały możliwie najwięcej funkcji dotyczących danego problemu i możliwie najlepiej demonstrowały ich działanie. Niektóre rozdziały zawierają coś więcej niż tylko opis funkcji OpenGL. Znaleźć tutaj można kilka tricków i przykładowych sposobów rozwiązania niektórych problemów, z którymi prędzej czy później każdy programista OpenGL musi się zetknąć. Na końcu każdego rozdziału jest bardzo przydatna część zwana "Podręcznikiem". Wyszczególnione są w nim wszystkie funkcje dotyczące danego problemu z dokładnie opisanymi składniami. Podręcznik jest przydatnym materiałem niekoniecznie dla początkujących programistów.

Podczas studiowania książki trafiłem na dwie poważne literówki. Przez jedną z nich zacząłem nawet "przeklinać" amigową implementację OpenGL. Zapewne przez pomyłkę obok funkcji glShadeModel pojawiła się funkcja glShadeMode, która z oczywistych powodów nie chciała się skompilować. Co ciekawe, obie "wersje" funkcji można znaleźć w skorowidzu na końcu książki. Nie jest to jednak jakaś wielka wpadka, ale tak to już jest w tekstach zawierających listingi programów czy opisy funkcji, że zwykła literówka zmienia się często w trudny do wykrycia błąd.

Najsłabsza strona książki to jej aktualność. Amigowcy przyzwyczaili się już do tego, że zawsze są krok do tyłu w stosunku do innych platform. W tym przypadku sprawa wygląda jednak odwrotnie. Opisywana wersja OpenGL jest dużo starsza od tej, której używają dzisiejsi amigowcy. Fakt iż książka dotyczy OpenGL 1.0 uważam za jej najsłabszą stronę. Zapewne ze względu na to, że jest to opis tak wczesnej wersji w całej książce nie wspomniano o bibliotece GLUT. W amigowej implementacji OpenGL (StormMESA) biblioteka GLUT jest niemal integralną częścią pakietu. Trudno mi jest wyobrazić sobie używanie OpenGL na AmigaOS bez funkcji dostępnych w tej bibliotece. Łączy ona niejako program w OpenGL ze środowiskiem w którym tworzony jest program (np. obsługa okien, ekranów, klawiatury), zachowując przy tym nadal cechy multiplatformowości. Lukę polegającą na braku opisu omawianej biblioteki częściowo wypełnia opis właściwie nieużywanej już dzisiaj biblioteki AUX. Na początku można opierać swoje programy o funkcje dostępne w AUX tym bardziej, że wszystko czego się przy tym nauczymy przyda się i ułatwi później przejście "z marszu" na bibliotekę GLUT. Ze względu na "wiekowość" oryginalnego tekstu można znaleźć w niej zdania, które rozśmieszą nawet amigowców wyposażonych w najsłabszy sprzęt, na którym jest sens bawić się w OpenGL (PowerPC i akcelerator 3D). O tym, że oryginalna wersja książki była pisana już stosunkowo dawno niech świadczą dwa poniższe cytaty:

"(...) oprócz wyświetlania ładnego teksturowanego obrazka, chcemy także polatać nad terenem. Aby to osiągnąć, musimy rysować teren bez teksturowania - głównie dlatego, że teksturowanie na zwykłym komputerze PC przebiega zbyt wolno jak na potrzeby animacji."

"(...) możesz stworzyć wersję z teksturowaniem lub bez, przynajmniej do czasu aż sprzętowe akceleratory 3D staną się bardziej powszechne."

Płyta CD-ROM dołączona do książki przyda się amigowcom w dużo mniejszym stopniu niż sama książka. Ja podczas poznawania OpenGL nie korzystałem z niej w ogóle. Wystarczająco dużo przykładowych programów można znaleźć w archiwach StormMESA. Przykłady z płyty są przeznaczone wyłącznie dla użytkowników systemu Windows i bez przeróbek (czasem trudnych dla początkujących programistów) nie da się ich skompilować i uruchomić na AmigaOS. Oczywiście ktoś kto już pewniej czuje się w programowaniu bez problemu dokona takich przeróbek, pytanie tylko czy wtedy będą mu potrzebne przykłady zawarte na płycie.

Trudno jest mi ocenić tę książkę. Z jednej strony ma braki, ale z drugiej jest to jedyna tego typu książka wydana w języku polskim. Wynika z tego że jest to najlepsza polska książka do nauki OpenGL. Zastanawiałem się, czy powinienem dokonywać oceny tej książki. Ze względu na to, że nie jest ona przeznaczona dla Amigi, a ja "na siłę" próbuję z niej zrobić ponadplatformowy kurs OpenGL, ocena byłaby zapewne mocno zaniżona. Szkoda, że autorzy tak kurczowo trzymali się środowiska Windows. Przy niewielkim nakładzie dodatkowej pracy mogłaby to byś książka "multiplatformowa", a użytkownicy Windows nic by na tym nie stracili. Przydałoby się nowsze wydanie książki, uwzględniające aktualną wersję OpenGL wraz z biblioteką GLUT. Mimo pewnych oporów mogę jednak wystawić ocenę tej książce. Od strony dydaktycznej oceniam książkę pozytywnie. Pozwala ona opanować OpenGL na tyle, żeby dalszą wiedzę na ten temat zgłębiać już samodzielnie. Uważam, że "Księga eksperta" warta jest niemałej sumy jaką trzeba na nią wydać. Przy odrobinie wyrozumiałości z powodzeniem można ją kupić nawet wtedy, gdy używa się (albo ma się zamiar używać) amigowej implementacji OpenGL (StormMESA). Przy trochę większej dozie wyrozumiałości, zaopatrzeniu się w dodatkową dokumentację i przestudiowaniu jej, książka jest przydatna również podczas poznawania MiniGL, który ostatnio staje się coraz bardziej popularny wśród użytkowników systemu AmigaOS.

Mariusz Włodarczyk
<<  Spis treści  >>