1
|
Zadanie na predmet VPPJ (Verejno Prospešné Programovanie v Jave, alebo Vývoj Programov pre Platformu Java 2). Išlo viacmenej o prerobenie starého zadania na predmet Objektové programovanie, ktoré však nebolo s podporou OpenGL. Zaujímavosťou na tomto programe je, že na našej škole bolo v podstate odovzdané tri krát, z toho dva krát na ten istý predmet a zakaždým za plný počet bodov :). Ako som už spomínal, najskôr som ho odovzdával na predmete Objektové programovanie, rok na to ho odovzdával spolubývajúci na predmet VPPJ a napokon som ho odovzdával ja s prerobením na OpenGL. Nakoľko išlo len o prerobenie, nosná konštrukcie programu bola hotová, odpadlo teda nepríjemná definovanie všetkých properties a zmenilo sa v podstate iba samotné renderovanie komponentov.
Program obsahuje základné grafické komponenty, ktoré sú renderované pomocou OpenGL. Na prvý pohľad sa to môže zdať zbytočné, ale nejde o nič iné, ako o pokus decentralizovať výpočtový výkon počítača medzi CPU a GPU. Komponentov nie je veľa a mnohé by sa ešte dali dopísať, čo nieje vďaka dobre navrhnutej hierarchii tried žiaden problém. Inšpiroval som sa objektovým modelom, ktorý používa Delphi pre svoje grafické komponenty a aplikoval som ho do Javy. Zaujímavosťou je definovanie callback funkcií, alebo metód ak chcete. Nakoľko ide o javu, nedá sa s funkciou/metódou pracovať rovnako ako v C/C++, preto som to spravil cez malý workaround a to tak, že som definoval triedu, ktorá danú funkciu/metódu obsahovala a tú triedu som len dedil a metódu prepisoval, čím som vytváral niečo ako vlastné callback funkcie. Pričom ako parameter som mohol predávať celý objekt.
Pre záujemcov prikladám dokumentáciu, v ktorej je aplikácia opísaná podrobnejšie. Okrem toho som nahral aj zdrojové kódy programu, spustiteľnú verziu pod GNU/Linux aj Windows. Ide o balík komponentov a triviálny demonštračný program. Verzia pre GNU/Linux a Windows je rozdielna kvôli natívnym funkciám, ktoré sú volané buď z *.so alebo *.dll. Program spúšťam z jar súboru a vo Windowse trochu blbne (to je ta multiplatformovosť javy), na prezentáciu som ho natvrdo prepísal, ide o zaujímavú chybu, ktorá mi nemala logiku, možno by sa odstránila použitím aktuálneho JOGL.
glComponents.zip (1.2 MB)
glComponents-bin.zip (2 MB)
glComponents-bin-win.zip (1.9 MB)
glComponents.pdf (488 KB)
1