Kuinka tehdä kuutio OpenGL: ssä (kuvilla)

Sisällysluettelo:

Kuinka tehdä kuutio OpenGL: ssä (kuvilla)
Kuinka tehdä kuutio OpenGL: ssä (kuvilla)

Video: Kuinka tehdä kuutio OpenGL: ssä (kuvilla)

Video: Kuinka tehdä kuutio OpenGL: ssä (kuvilla)
Video: MEGA Chia GPU Farming and Plotting Guide for Linux - Gigahorse Start to Finish - 2023 2024, Maaliskuu
Anonim

OpenGL on tehokas 3D-ohjelmointityökalu, jota käytetään piirtämään monimutkaisia kolmiulotteisia kohtauksia yksinkertaisista primitiiveistä. Tämä artikkeli opettaa sinulle kuinka piirtää yksinkertainen kuutio, jonka voit pyörittää katsellaksesi kolmea ulottuvuutta!

Tätä projektia varten tarvitset koodieditorin ja jonkin verran tietoa C -ohjelmoinnista.

Askeleet

Osa 1/3: Alkuasetukset

1994315 1 1
1994315 1 1

Vaihe 1. OpenGL: n asentaminen Aloita asentamalla OpenGL järjestelmään seuraavasti

Jos sinulla on jo OpenGL ja yhteensopiva C -kääntäjä, voit ohittaa tämän vaiheen ja siirtyä seuraavaan.

1994315 2 1
1994315 2 1

Vaihe 2. Luo asiakirja

Luo uusi tiedosto suosikkikoodieditorissasi ja tallenna se nimellä mycube.c

1994315 3 1
1994315 3 1

Vaihe 3. Lisää #sisältö

Nämä ovat perussisältöjä, joita tarvitset ohjelmaan. On tärkeää ymmärtää, että eri käyttöjärjestelmille tarvitaan todella erilaisia sisältöjä. Muista sisällyttää kaikki nämä varmistaaksesi, että ohjelmasi on monipuolinen ja voidaan ajaa kaikille käyttäjille.

    // Sisältää #include #include #include #define GL_GLEXT_PROTOTYPES #ifdef _APPLE_ #include #else #include #endif

1994315 4 1
1994315 4 1

Vaihe 4. Lisää funktion prototyyppejä ja globaaleja muuttujia

Seuraava askel on julkaista joitakin toimintojen prototyyppejä.

    // Toiminto Prototyypit tyhjä näyttö (); void specialKeys (); // Globaalimuuttujat double rotate_y = 0; kaksoiskierrä_x = 0;

1994315 5 1
1994315 5 1

Vaihe 5. Määritä päätoiminto ()

    int main (int argc, char* argv ) {// Alusta GLUT ja käsittele käyttäjän parametrit glutInit (& argc, argv); // Pyydä kaksoispuskuroitu todellinen väri-ikkuna Z-puskurilla glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);

  • Tämä lausunto luo ympäristön. Suuri asia muistaa, kun kirjoitat OpenGL -ohjelmia, on se, että sinun on pyydettävä kaikkea. Tämä edellyttää, että ymmärrät paremmin, miten ohjelmasi toimii ja mitä sinun on sisällytettävä halutun toiminnallisuuden saamiseksi. Tällä rivillä voit määrittää näytön kaksoispuskuroinnilla, RGB-väreillä ja Z-puskurilla.
  • Kaksinkertainen puskurointi on tekniikka, jota käytetään grafiikkaohjelmissa kuvien vetämiseen näytöstä johtuvan ongelman poistamiseksi. Aina kun piirrät kohtauksen uudelleen, näyttö on ensin poistettava ja uudet tiedot piirretään. Ilman kaksinkertaista puskurointia havaitset välkkyvän vaikutelman, kun näyttö pyyhitään ja piirretään uudelleen.
  • Tämä ongelma on korjattu lisäämällä toinen puskuri piirtämistä varten. Tällä menetelmällä kuva vedetään ensimmäiseen puskuriin ja puskuri näytetään sinulle. Seuraava kehys vedetään toiseen puskuriin ja kun se on tehty, molemmat puskurit vaihtavat paikkoja. Näet heti toisen puskurin, mutta meiltä piilotettuna ensimmäinen puskuri poistetaan ja piirretään uudelleen kolmannen kehyksen kanssa, joka vaihdetaan, kun se on valmis.
  • Haluat myös ottaa käyttöön RGB väri järjestelmä ikkunassasi.
  • Z-puskurointi Näin saat haluamasi 3D -tehosteet. OpenGL käyttää kolmiulotteista koordinaattijärjestelmää, jossa on x-, y- ja z -akselit. Jotta kohde olisi lähempänä sinua, sen sijaintia z -akselilla lisätään, mutta sen näkyvyyttä kauempana sen sijaintia z -akselilla pienennetään.
1994315 6 1
1994315 6 1

Vaihe 6. Luo ikkuna

Seuraava askel on luo ikkuna johon piirtää kuution. Tässä opetusohjelmassa ikkunan nimi on "Mahtava kuutio".

    // Luo ikkuna glutCreateWindow ("Mahtava kuutio");

1994315 7 1
1994315 7 1

Vaihe 7. Ota syvyystesti käyttöön

OpenGL on tiukka kieli, koska se ei oleta, että erityisominaisuudet ovat käytössä. Jotta ohjelmasi näkyisi oikein kolmiulotteisena käyttämällä aiemmin tarkasteltavaa Z-puskuria, sinun on tehtävä se ottaa syvyystestin käyttöön. Kun jatkat OpenGL: n tutkimista, huomaat monia ominaisuuksia, jotka sinun on otettava käyttöön, mukaan lukien valaistus, tekstuurit, teurastus ja paljon muuta.

    // Salli Z-puskurin syvyystesti glEnable (GL_DEPTH_TEST);

1994315 8 1
1994315 8 1

Vaihe 8. Lisää takaisinsoittotoimintoja

Tässä ovat takaisinsoittotoiminnot, joita varten kirjoitit prototyypit aiemmin. Näitä toimintoja kutsutaan joka kerta pääsilmukan kautta. Näyttötoiminto piirtää kohtauksen uudelleen perustuen muutoksiin, jotka on tehty edellisen puhelun jälkeen. SpecialKeys -toiminnon avulla voimme olla vuorovaikutuksessa ohjelman kanssa.

    // Takaisinsoittotoiminnot glutDisplayFunc (näyttö); glutSpecialFunc (specialKeys);

1994315 9 1
1994315 9 1

Vaihe 9. Käynnistä MainLoop

Tämä palauttaa päätoiminnon muistiin, kunnes suljet ohjelman animaatioiden ja käyttäjien vuorovaikutuksen sallimiseksi.

    // Ohjaa GLUT tapahtumille glutMainLoop (); // Paluu käyttöjärjestelmään return 0; }

Osa 2/3: Näyttö () -toiminto

1994315 10 1
1994315 10 1

Vaihe 1. Ymmärrä tämän toiminnon tarkoitus

Kaikki kuution piirtotyöt tehdään tässä toiminnossa. Kuution yleinen idea on piirtää kaikki kuusi sivua yksitellen ja sijoittaa ne oikeaan paikkaan.

Käsitteellisesti jokainen puoli piirretään määrittelemällä neljä kulmaa ja antamalla OpenGL: n yhdistää linjat ja täyttämällä se valitsemallasi värillä. Alla on vaiheet tämän tekemiseen

1994315 11 1
1994315 11 1

Vaihe 2. Lisää glClear ()

Ensimmäinen askel, joka sinun on suoritettava tässä toiminnossa, on tyhjennä väri ja Z -puskuri. Ilman näitä vaiheita vanhat piirustukset voivat silti näkyä uusien piirustusten alla ja piirretyt objektit eivät ole oikeassa paikassa näytöllä.

    void display () {// Tyhjennä näyttö ja Z-puskuri glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

1994315 12 1
1994315 12 1

Vaihe 3. Lisää glBegin () ja glEnd ()

OpenGL määrittelee objektit eri monikulmioiden yhdistelmiksi. Käyttämällä glBegin () komento, laitat tehokkaasti kynän, joka piirtää muodon. Jos haluat nostaa kynän ylös ja aloittaa uuden muodon, käytä glEnd () komento. Tässä opetusohjelmassa piirrät kuution jokaisen sivun GL_POLYGONilla, mutta voit käyttää muita parametrivaihtoehtoja, kuten GL_LINE, GL_QUAD tai GL_TRIANGLE muiden muotojen luomiseen.

  • Tässä aloitat kuution etupuolelta. Myöhemmin lisäät väriä kaikille 6 puolelle.
  • // Monivärinen puoli - FRONT glBegin (GL_POLYGON); // Pisteet lisätään seuraavassa vaiheessa glEnd ();

1994315 13 1
1994315 13 1

Vaihe 4. Lisää glVertex3f ()

Kun olet ilmoittanut, että haluat aloittaa monikulmion, sinun on tehtävä se määrittele kärkipisteet esineestä. glVertexillä on useita muotoja riippuen siitä, mitä haluat tehdä objektillesi.

  • Ensimmäinen on kuinka monessa ulottuvuudessa työskentelet. GlVertex3f: n yllä oleva 3 kertoo, että piirrät kolmiulotteisesti. On myös mahdollista työskennellä 2 tai 4 ulottuvuudessa. GlVertex3f: n yllä oleva f kertoo, että käytät liukulukuisia numeroita. Voit myös käyttää shortseja, kokonaislukuja tai nelinpeliä.
  • Huomaa, että nämä kohdat on määritelty kohdassa a vastapäivään tavalla. Tällä ei ole kovin suurta merkitystä tällä hetkellä, mutta kun aloitat työskentelyn valaistuksen, tekstuurien ja teurastamisen kanssa, siitä tulee uskomattoman tärkeää, joten ota tapana määritellä pisteesi vastapäivään.
  • Lisää lisää pisteet glBegin () - ja glEnd () -rivien väliin.
  • // Monivärinen puoli - FRONT glBegin (GL_POLYGON); glVertex3f (-0,5, -0,5, -0,5); // P1 glVertex3f (-0,5, 0,5, -0,5); // P2 glVertex3f (0,5, 0,5, -0,5); // P3 glVertex3f (0,5, -0,5, -0,5); // P4 glEnd ();

1994315 14 1
1994315 14 1

Vaihe 5. Lisää glColor3f ()

glColor toimii samalla tavalla kuin glVertex. Voit määrittää pisteitä lyhyiksi, kokonaisluvuiksi, tuplaksi tai kellukkeiksi. Jokaisella värillä on arvo 0 - 1. Kaikki 0 tekevät pisteestä mustan ja kaikki 1 tekee pisteestä valkoisen. 3 in glColor3f () viittaa RGB -värijärjestelmään ilman alfa -kanavaa. Värin alfa määrittää sen läpinäkyvyyden. Jos haluat muuttaa alfa -tasoa, käytä glColor4f () -toimintoa ja viimeisen parametrin arvo on 0–1, jotta läpinäkymätön tai läpinäkyvä.

  • Kun kutsut glColor3f (): a, jokainen siitä pisteestä piirretty kärki on samaa väriä. Siksi, jos haluat, että kaikki neljä kärkeä ovat punaisia, aseta väri milloin tahansa ennen glVertex3f () -komentoja ja kaikki kärkipisteet ovat punaisia.
  • Alla määritelty etupuoli näyttää uuden värin määrittämisen kullekin kärkipisteelle. Kun teet tämän, näet mielenkiintoisen ominaisuuden OpenGL -väreistä. Koska monikulmion jokaisella kärjellä on oma väri, OpenGL sekoittaa värit automaattisesti! Seuraavassa vaiheessa näytetään, kuinka neljä samanväristä kärkeä annetaan.
  • // Monivärinen puoli - FRONT glBegin (GL_POLYGON); glColor3f (1,0, 0,0, 0,0); glVertex3f (0,5, -0,5, -0,5); // P1 on punainen glColor3f (0.0, 1.0, 0.0); glVertex3f (0,5, 0,5, -0,5); // P2 on vihreä glColor3f (0.0, 0.0, 1.0); glVertex3f (-0,5, 0,5, -0,5); // P3 on sininen glColor3f (1,0, 0,0, 1,0); glVertex3f (-0,5, -0,5, -0,5); // P4 on violetti glEnd ();

1994315 15 1
1994315 15 1

Vaihe 6. Käsittele muita sivuja

Selvitä, mikä on kunkin kärjen sijainti kuution viidellä muulla puolella, mutta yksinkertaisuuden vuoksi nämä on laskettu sinulle ja ne sisältyvät viimeisen näytön () toiminto alla.

    // Valkoinen puoli - TAKAISIN glBegin (GL_POLYGON); glColor3f (1,0, 1,0, 1,0); glVertex3f (0,5, -0,5, 0,5); glVertex3f (0,5, 0,5, 0,5); glVertex3f (-0,5, 0,5, 0,5); glVertex3f (-0,5, -0,5, 0,5); glEnd (); // Violetti puoli - OIKEA glBegin (GL_POLYGON); glColor3f (1,0, 0,0, 1,0); glVertex3f (0,5, -0,5, -0,5); glVertex3f (0,5, 0,5, -0,5); glVertex3f (0,5, 0,5, 0,5); glVertex3f (0,5, -0,5, 0,5); glEnd (); // Vihreä puoli - VASEN glBegin (GL_POLYGON); glColor3f (0,0, 1,0, 0,0); glVertex3f (-0,5, -0,5, 0,5); glVertex3f (-0,5, 0,5, 0,5); glVertex3f (-0,5, 0,5, -0,5); glVertex3f (-0,5, -0,5, -0,5); glEnd (); // Sininen puoli - TOP glBegin (GL_POLYGON); glColor3f (0,0, 0,0, 1,0); glVertex3f (0,5, 0,5, 0,5); glVertex3f (0,5, 0,5, -0,5); glVertex3f (-0,5, 0,5, -0,5); glVertex3f (-0,5, 0,5, 0,5); glEnd (); // Punainen puoli - ALAS glBegin (GL_POLYGON); glColor3f (1,0, 0,0, 0,0); glVertex3f (0,5, -0,5, -0,5); glVertex3f (0,5, -0,5, 0,5); glVertex3f (-0,5, -0,5, 0,5); glVertex3f (-0,5, -0,5, -0,5); glEnd (); glFlush (); glutSwapBuffers (); }

  • Haluamme myös lisätä kaksi viimeistä koodiriviä tälle toiminnolle. Nämä ovat glFlush ();

    ja glutSwapBuffers ();

    jotka antavat meille kaksinkertaisen puskurointivaikutuksen, josta opit aiemmin.

Osa 3/3: Käyttäjien vuorovaikutteisuus

1994315 16 1
1994315 16 1

Vaihe 1. Lisää specialKeys ()

Olet melkein valmis, mutta tällä hetkellä voit piirtää kuution, mutta sinulla ei ole mahdollisuutta kiertää sitä. Voit tehdä tämän luo erikoisavaimet () toiminto, jonka avulla voimme painaa nuolinäppäimiä ja kiertää kuutiota!

  • Tämän funktion vuoksi olet ilmoittanut globaalimuuttujat rotate_x ja rotate_y. Kun painat oikeaa ja vasenta nuolinäppäintä, rotate_y kasvaa tai pienenee 5 astetta. Samoin, kun painat ylä- ja alanuolinäppäimiä, rotate_x muuttuu vastaavasti.
  • void specialKeys (int -näppäin, int x, int y) {// Oikea nuoli - lisää kiertoa 5 astetta, jos (avain == GLUT_KEY_RIGHT) rotate_y += 5; // Vasen nuoli - vähennä kiertoa 5 astetta, jos (näppäin == GLUT_KEY_LEFT) rotate_y - = 5; else if (avain == GLUT_KEY_UP) rotate_x += 5; else if (avain == GLUT_KEY_DOWN) rotate_x -= 5; // Pyydä näytön päivitystä glutPostRedisplay (); }

1994315 17 1
1994315 17 1

Vaihe 2. Lisää glRotate ()

Viimeinen lauseesi on lisätä lauseke, joka kääntää objektiasi. Palaa takaisin näyttö () -toimintoon ja lisää seuraavat rivit FRONT -puolen eteen:

    // Nollaa muunnokset glLoadIdentity (); // Kierrä, kun käyttäjä muuttaa rotate_x ja rotate_y glRotatef (rotate_x, 1.0, 0.0, 0.0); glRotatef (kierrä_y, 0,0, 1,0, 0,0); // Monivärinen puoli - ETU….

  • Huomaa ensin, että syntaksi glRotatef () on samanlainen kuin glColor3f () ja glVertex3f (), mutta vaatii aina 4 parametria. Ensimmäinen parametri on sovellettava pyörimisaste. Seuraavat kolme parametria määrittävät, minkä akselin ympäri pyöritetään. Ensimmäinen on x -akseli, toinen y -akseli ja kolmas z -akseli. Tällä hetkellä sinun tarvitsee vain kiertää x- ja y-akselin ympäri.
  • Kaikki ohjelmaan kirjoittamasi muunnokset tarvitsevat samanlaisia rivejä. Käsitteellisesti voit ajatella tämän kiertävän objektiasi x -akselin ympäri rotate_x: n määrittämällä määrällä ja sitten kiertämällä y -akselin ympäri rotate_y: llä. OpenGL yhdistää kuitenkin kaikki nämä lausumat yhdeksi matriisimuunnokseksi. Aina kun soitat näyttötoimintoon, muodostat muunnosmatriisin ja glLoadIdentity () takaa, että aloitat uuden matriisin jokaisessa lähdössä.
  • Muut transformaatiofunktiot, joita voit käyttää, ovat glTranslatef () ja glScalef (). Nämä toiminnot ovat samankaltaisia kuin glRotatef (), paitsi että ne vievät vain kolme parametria, x, y ja z, jotka kääntävät tai skaalaavat objektin.
  • Jotta saat oikean vaikutuksen, kun käytät kaikkia kolmea muunnosta yhteen objektiin, sinun on sovellettava niitä oikeassa järjestyksessä. Kirjoita ne aina järjestykseen glTranslate, glRotate ja glScale. OpenGL soveltaa olennaisesti muunnoksia alhaalta ylöspäin. Ymmärtääksesi tämän yritä kuvitella, miltä yksinkertainen 1x1x1 -kuutio näyttäisi muunnoksilla, jos OpenGL soveltaisi niitä ylhäältä alas ja jos OpenGL soveltaisi niitä alhaalta ylöspäin.
1994315 18 1
1994315 18 1

Vaihe 3. Lisää seuraavat komennot skaalataksesi kuutiota 2 x-akselia pitkin, 2 y-akselia pitkin, kiertämällä kuutiota 180 astetta y-akselin ympäri ja kääntämällä kuutiota 0,1 x-akselia pitkin

Varmista, että järjestät nämä sekä edelliset glRotate () -komennot oikeaan järjestykseen yllä kuvatulla tavalla. (Jos olet epävarma, tämä tehdään opetusohjelman lopussa olevassa lopullisessa koodissa.)

    // Muut muunnokset glTranslatef (0,1, 0,0, 0,0); glRotatef (180, 0,0, 1,0, 0,0); glScalef (2,0, 2,0, 0,0);

1994315 19 1
1994315 19 1

Vaihe 4. Käännä ja suorita koodisi

Olettaen, että käytät gcc: tä kääntäjänä, suorita nämä komennot päätelaitteestasi ohjelman kääntämiseksi ja testaamiseksi.

    Linuxissa: gcc cube.c -o kuutio -lglut -lGL./ mycube Mac: gcc -o foo foo.c -framework GLUT -framework OpenGL./ mycube Windows: gcc -Wall -ofoo foo.c -lglut32cu - lglu32 -lopengl32./ mycube

1994315 20 1
1994315 20 1

Vaihe 5. Tarkista täydellinen koodi

Sen pitäisi olla näin:

    // // Tiedosto: mycube.c // Tekijä: Matt Daisley // Luotu: 25.4.2012 // Projekti: Lähdekoodi Make a Cube in OpenGL // Kuvaus: Luo OpenGL -ikkunan ja piirtää 3D -kuution/ / Käyttäjä voi kiertää nuolinäppäimillä // // Säätimet: Vasen nuoli -Kierrä vasemmalle // Oikea nuoli -Kierrä oikealle // Ylänuoli -Kierrä ylös // Alanuoli -Kierrä alas // ------ -------------------------------------------------- -// Sisältää // ------------------------------------------- --------------- #include #include #include #define GL_GLEXT_PROTOTYPES #ifdef _APPLE_ #include #else #include #endif // ------------- -------------------------------------------- // Toimintojen prototyypit / / ------------------------------------------------- --------- tyhjä näyttö (); void specialKeys (); // ------------------------------------------------ ---------- // Globaalimuuttujat // ---------------------------------- ------------------------ kaksinkertainen kierto_y = 0; kaksoiskierrä_x = 0; // ------------------------------------------------ ---------- // display () callback-toiminto // ------------------------------- --------------------------- tyhjä näyttö () {// Tyhjennä näyttö ja Z-puskuri glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Nollaa muunnokset glLoadIdentity (); // Muut muunnokset // glTranslatef (0,1, 0,0, 0,0); // ei sisälly // glRotatef (180, 0,0, 1,0, 0,0); // Ei sisälly // Kierrä, kun käyttäjä muuttaa rotate_x ja rotate_y glRotatef (rotate_x, 1.0, 0.0, 0.0); glRotatef (kierrä_y, 0,0, 1,0, 0,0); // Muut muunnokset // glScalef (2.0, 2.0, 0.0); // Ei sisälly // Monivärinen puoli - FRONT glBegin (GL_POLYGON); glColor3f (1,0, 0,0, 0,0); glVertex3f (0,5, -0,5, -0,5); // P1 on punainen glColor3f (0.0, 1.0, 0.0); glVertex3f (0,5, 0,5, -0,5); // P2 on vihreä glColor3f (0.0, 0.0, 1.0); glVertex3f (-0,5, 0,5, -0,5); // P3 on sininen glColor3f (1,0, 0,0, 1,0); glVertex3f (-0,5, -0,5, -0,5); // P4 on violetti glEnd (); // Valkoinen puoli - TAKAISIN glBegin (GL_POLYGON); glColor3f (1,0, 1,0, 1,0); glVertex3f (0,5, -0,5, 0,5); glVertex3f (0,5, 0,5, 0,5); glVertex3f (-0,5, 0,5, 0,5); glVertex3f (-0,5, -0,5, 0,5); glEnd (); // Violetti puoli - OIKEA glBegin (GL_POLYGON); glColor3f (1,0, 0,0, 1,0); glVertex3f (0,5, -0,5, -0,5); glVertex3f (0,5, 0,5, -0,5); glVertex3f (0,5, 0,5, 0,5); glVertex3f (0,5, -0,5, 0,5); glEnd (); // Vihreä puoli - VASEN glBegin (GL_POLYGON); glColor3f (0,0, 1,0, 0,0); glVertex3f (-0,5, -0,5, 0,5); glVertex3f (-0,5, 0,5, 0,5); glVertex3f (-0,5, 0,5, -0,5); glVertex3f (-0,5, -0,5, -0,5); glEnd (); // Sininen puoli - TOP glBegin (GL_POLYGON); glColor3f (0,0, 0,0, 1,0); glVertex3f (0,5, 0,5, 0,5); glVertex3f (0,5, 0,5, -0,5); glVertex3f (-0,5, 0,5, -0,5); glVertex3f (-0,5, 0,5, 0,5); glEnd (); // Punainen puoli - ALAS glBegin (GL_POLYGON); glColor3f (1,0, 0,0, 0,0); glVertex3f (0,5, -0,5, -0,5); glVertex3f (0,5, -0,5, 0,5); glVertex3f (-0,5, -0,5, 0,5); glVertex3f (-0,5, -0,5, -0,5); glEnd (); glFlush (); glutSwapBuffers (); } // ----------------------------------------------- ----------- // specialKeys () takaisinsoittotoiminto // ------------------------------ ---------------------------- void specialKeys (int-näppäin, int x, int y) {// Oikea nuoli-lisää kiertoa 5 aste jos (avain == GLUT_KEY_RIGHT) kierrä_y += 5; // Vasen nuoli - vähennä kiertoa 5 astetta, jos (näppäin == GLUT_KEY_LEFT) rotate_y - = 5; else if (avain == GLUT_KEY_UP) rotate_x += 5; else if (avain == GLUT_KEY_DOWN) rotate_x -= 5; // Pyydä näytön päivitystä glutPostRedisplay (); } // ----------------------------------------------- ----------- // päätoiminto // ------------------------------- --------------------------- int main (int argc, char* argv ) {// Alusta GLUT ja käsittele käyttäjän parametrit glutInit (& argc, argv); // Pyydä kaksoispuskuroitu todellinen väri-ikkuna Z-puskurilla glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); // Luo ikkuna glutCreateWindow ("Mahtava kuutio"); // Salli Z-puskurin syvyystesti glEnable (GL_DEPTH_TEST); // Takaisinsoittotoiminnot glutDisplayFunc (näyttö); glutSpecialFunc (specialKeys); // Ohjaa GLUT tapahtumille glutMainLoop (); // Paluu käyttöjärjestelmään return 0; }

Suositeltava: