Witam wszystkich.
Mam pewne pytanie dotyczące... powiedzmy, że sposobu działania OpenGL.
Programowaniem zajmuję się od dawna, natomiast jakoś wcześniej nigdy nie miałem ani potrzeby, ani ochoty ruszać tematów związanych z grafiką. (Nie)stety tak się złożyło, że muszę obecnie napisać coś z użyciem OpenGL - stąd mój post.
Ogólnie sobie radzę z tematem, ogarniam rysowanie, określanie bryły obcinania, skalowanie itp, ale zastanawia mnie jedna rzecz - i właśnie o opinię w tej sprawie chciałem Was prosić.
Zawsze wcześniej (zanim zacząłem wgryzać się w szczegóły GL'a) byłem przekonany, że (pisząc w dużym uproszczeniu) korzystanie z OpenGL'a wygląda mniej-więcej tak:
- opisuję "coś", co chcę narysować - np.dom. Określam wierzchołki tworzące powierzchnie, podaję ich kolory, nakładam tekstury itp.
- OpenGL sobie "pamięta" to, co ja narysowałem
- Wszelkie animacje (przesunięcia, przybliżenia, rotacje itp.) są wykonywane bez ponownego rysowania modelu - po prostu daję polecenie, że teraz proszę przesunąć "kamerę" o 50 jednostek w lewo albo wykonać obrót w pionie o 30 stopni.
Niestety - podczas uczenia się OpenGL'a zauważyłem, że to, co jest w kursach i książkach mija się z moją (opisaną powyżej) wizją. Za każdym razem trzeba wszystko rysować od nowa, klatka po klatce. Sam OpenGL "niczego nie pamięta". Nawet jak okno z renderem zostanie chwilowo przesłonięte - mimo faktu, że nic się nie zmieniło w rysowanej scenie, trzeba ją odmalować ponownie.
I teraz moje pytanie - czy tak jest naprawdę, muszę "ręcznie" klatka po klatce odrysowywać to, co chcę pokazać, czy może jest jakiś sposób / mechanizm który działa zgodnie z podanymi powyżej punktami 1-3, ale gdzieś go przeoczyłem? Bardzo proszę albo o odpowiedź w stylu "tak ziom, musisz sobie sam rysować", albo o skierowanie w odpowiednim kierunku, udzielenie jakiejś wskazówki do dalszych poszukiwań / podrzucenie punktu zaczepienia ;)