Mennäänpäs suoraan asiaan:
Mulla olis tavoitteena tehdä ohjelma (c++), joka simuloi säätilaa ja esittää simuloinnin tulokset graafisesti (trendien piirto jne.). Tulosten ja muuttujien visualisointiin ajattelin käyttää opengl:ää, kun sitä on kovasti mainostettu grafiikan esittämiseen.
Tämän hetkinen tilanne on, että mulla on "windows application", josta saa simuloinnin päälle ja pois nappia painamalla ja yksi muuttujakin esitetään opengl-animaation avulla (tein GL_POLYGON:n avulla pylväskuvan).
Nyt minua vain askarruttaa, että miten pystyn monistamaan esimerkiksi tuota pylväskuvaa. Tai miten voin luoda useita ikkunoita, joissa pyörii oma animaationsa (esim. muuttujien trendien piirto omissa ikkunoissaan)? Ja onko opengl oikea työkalu tähän.
Kääntäjänä käytän dev-cpp:tä.
Olet ehkä käyttänyt jo funktiota wglMakeCurrent, tai jos et, niin nyt olisi luultavasti sen aika. Sillä voi käsittääkseni asettaa tietyn GL-kontekstin aktiiviseksi.
class hetkellinen_aktivointi { HDC old_hdc; HGLRC old_hglrc; HWND hwnd; HDC hdc; HGLRC hglrc; public: // Objektin luonti (parametreina ikkuna ja GL-konteksti): hetkellinen_aktivointi(HWND _hwnd, HGLRC _hglrc) { // Vanhat tiedot talteen old_hdc = wglGetCurrentDC(); old_hglrc = wglGetCurrentContext(); // Tämän kerran tiedot muistiin hwnd = _hwnd; hglrc = _hglrc; hdc = GetDC(hwnd); // Aktivointi wglMakeCurrent(hdc, hglrc); } // Objektin tuhoutuminen: ~hetkellinen_aktivointi() { // Vanhat takaisin wglMakeCurrent(old_hdc, old_hglrc); // Vapautetaan omat roskat ReleaseDC(hwnd, hdc); } }; void piirra_ikkuna_1() { hetkellinen_aktivointi akt(hwnd_1, hglrc_1); // Nyt voi piirtää ikkunaan hwnd_1. // Funktion lopussa akt-objekti tuhoutuu ja palauttaa vanhan kontekstin. } void piirra_ikkuna_2() { hetkellinen_aktivointi akt(hwnd_2, hglrc_2); // Nyt voi piirtää ikkunaan hwnd_2. // Välissä voi vaikka piirtää 1. ikkunankin: piirra_ikkuna_1(); }
Tämä tarinointi perustuu täysin teoriaan ja oletuksiin, itse en ole sen paremmin wgl:ään kuin useampaan ikkunaankaan koskenut. Koodin toteutustapakin on ehkä outo, mutta siinä ovat kuitenkin kaikki olennaiset funktiot parametreineen.
Hmm, jotenkin tuohon tapaan se täytyy toteuttaa. kiitos vatauksesta.
Aihe on jo aika vanha, joten et voi enää vastata siihen.