Jinsi ya kutengeneza Mchemraba katika OpenGL (na Picha)

Orodha ya maudhui:

Jinsi ya kutengeneza Mchemraba katika OpenGL (na Picha)
Jinsi ya kutengeneza Mchemraba katika OpenGL (na Picha)

Video: Jinsi ya kutengeneza Mchemraba katika OpenGL (na Picha)

Video: Jinsi ya kutengeneza Mchemraba katika OpenGL (na Picha)
Video: ВСЯ НОЧЬ С ПОЛТЕРГЕЙСТОМ В ЖИЛОМ ДОМЕ, я заснял жуткую активность. 2024, Aprili
Anonim

OpenGL ni zana yenye nguvu ya programu ya 3D inayotumika kuteka taswira tata za pande tatu kutoka kwa vitangulizi rahisi. Nakala hii itakufundisha jinsi ya kuteka mchemraba rahisi ambao unaweza kuzunguka ili kuona katika vipimo vitatu!

Kwa mradi huu utahitaji mhariri wa nambari na ujuzi fulani wa programu C.

Hatua

Sehemu ya 1 ya 3: Usanidi wa Awali

1994315 1 1
1994315 1 1

Hatua ya 1. Sakinisha OpenGL Ili kuanza kufuata hatua hizi kusanidi OpenGL kwenye mfumo wako

Ikiwa tayari unayo OpenGL, na vile vile kiambatisho cha C kinachoendana kimewekwa, unaweza kuruka hatua hii na kwenda nyingine.

1994315 2 1
1994315 2 1

Hatua ya 2. Unda hati

Unda faili mpya katika mhariri wako wa nambari uipendayo na uihifadhi kama mycube.c

1994315 3 1
1994315 3 1

Hatua ya 3. Ongeza # pamoja na

Hizi ndio msingi ni pamoja na utahitaji kwa programu yako. Ni muhimu kutambua kuwa kuna anuwai tofauti inayohitajika kwa mifumo tofauti ya uendeshaji. Hakikisha kujumuisha hizi zote ili kuhakikisha kuwa programu yako ni anuwai na inaweza kukimbia kwa mtumiaji yeyote.

    // Ni pamoja na # pamoja na # pamoja na # pamoja na #fafanua GL_GLEXT_PROTOTYPES #ifdef _APPLE_ # pamoja na #else #include #endif

1994315 4 1
1994315 4 1

Hatua ya 4. Ongeza prototypes za kazi na anuwai za ulimwengu

Hatua yako inayofuata ni kutangaza prototypes kadhaa za kazi.

    // Prototypes za Utendaji kuonyesha batili (); vitupu maalum (); // Viwango vya Ulimwenguni vinazunguka mara mbili_y = 0; zungusha mara mbili_x = 0;

1994315 5 1
1994315 5 1

Hatua ya 5. Sanidi kazi kuu ()

    int kuu (int argc, char * argv ) {// Anzisha GLUT na uchakata vigezo vya mtumiaji glutInit (& argc, argv); // Omba densi ya rangi ya kweli iliyopigwa mara mbili na Z-buffer glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);

  • Taarifa hii inaweka mazingira yako. Jambo kubwa kukumbuka wakati wa kuandika programu za OpenGL ni kwamba lazima uulize kila kitu. Hii inahitaji uwe na uelewa mkubwa wa jinsi programu yako inavyofanya kazi na nini unahitaji kujumuisha ili kupata utendaji unaotaka. Katika mstari huu, utaweka onyesho kwa bafa mbili, rangi ya RGB, na bafa ya Z.
  • Kugawa mara mbili ni mbinu inayotumiwa katika programu za picha ili kuondoa shida inayoibuka kutokana na jinsi picha zinavyopigwa kwenye skrini. Kila wakati unapochora upya onyesho, onyesho lazima lifutwe kwanza kisha habari mpya itatolewa. Bila kubatiza mara mbili utaona athari ya kuzima wakati skrini inafutwa na kuchorwa tena mara kwa mara.
  • Shida hii imerekebishwa kwa kuongeza bafa ya pili kuteka. Kwa njia hii, picha hutolewa kwa bafa ya kwanza na bafa hiyo unaonyeshwa kwako. Sura inayofuata itavutwa kwa bafa ya pili na inapomalizika, bafa mbili zitabadilisha maeneo. Mara moja utaona bafa ya pili, lakini, iliyofichwa kwetu, bafa ya kwanza inafutwa na kutolewa tena na fremu ya tatu ambayo itabadilishwa ikiisha.
  • Unataka pia kuwezesha faili ya Rangi ya RGB mfumo katika dirisha lako.
  • Z-buffering ni jinsi unavyopata athari za 3D unazotaka. OpenGL hutumia mfumo wa kuratibu pande tatu na shoka za x, y na z. Ili kutoa athari kwamba kitu kiko karibu na wewe msimamo wake kwenye mhimili wa z umeongezeka, hata hivyo, kuifanya ionekane mbali zaidi msimamo wake kwenye mhimili wa z umepungua.
1994315 6 1
1994315 6 1

Hatua ya 6. Unda dirisha

Hatua inayofuata ni unda dirisha ndani ambayo utavuta mchemraba. Katika mafunzo haya, dirisha inaitwa "Mchemraba wa kushangaza".

    // Unda glasi ya GlCreateWindow ("Mchemraba wa kushangaza");

1994315 7 1
1994315 7 1

Hatua ya 7. Wezesha mtihani wa kina

OpenGL ni lugha kali kwa kuwa haifikirii kuwa huduma yoyote maalum imewezeshwa. Ili programu yako ionyeshwe vizuri katika vipimo-3 kwa kutumia bafa ya Z ambayo uliiangalia mapema, unahitaji wezesha mtihani wa kina. Unapoendelea kuchunguza OpenGL, utagundua huduma nyingi ambazo utahitaji kuwezesha ikiwa ni pamoja na taa, maandishi, yanayowakabili na mengi zaidi.

    // Wezesha Z-buffer kina mtihani glEnable (GL_DEPTH_TEST);

1994315 8 1
1994315 8 1

Hatua ya 8. Ongeza kazi za kupiga simu tena

Hapa kuna kazi za kupigia simu uliyoandika prototypes kwa mapema. Kila wakati kupitia kitanzi kikuu, kazi hizi zitaitwa. Kazi ya kuonyesha hutengeneza upya eneo kulingana na mabadiliko yoyote kwa vigeuzi ambavyo vilifanywa tangu simu ya awali. Kazi maalum ya Key inaruhusu sisi kuingiliana na programu.

    // Kazi za kupigia simu glutDisplayFunc (onyesha); glutSpecialFunc (maalumKey);

1994315 9 1
1994315 9 1

Hatua ya 9. Anzisha MainLoop

Hii itakumbuka kazi kuu hadi utakapofunga programu kuruhusu uhuishaji na mwingiliano wa mtumiaji.

    // Pitia udhibiti kwa GLUT kwa hafla za glutMainLoop (); // Kurudi kwa OS kurudi 0; }

Sehemu ya 2 ya 3: Kazi ya kuonyesha ()

1994315 10 1
1994315 10 1

Hatua ya 1. Elewa madhumuni ya kazi hii

Kazi yote ya kuchora mchemraba wako itafanywa katika kazi hii. Wazo la jumla nyuma ya mchemraba wako ni kuchora pande zote sita kivyake na kuziweka katika nafasi inayofaa.

Kwa dhana, kila upande utavutwa kwa kufafanua pembe nne na kuruhusu OpenGL iunganishe mistari na kuijaza na rangi unayoifafanua. Chini ni hatua za kufanya hivyo

1994315 11 1
1994315 11 1

Hatua ya 2. Ongeza glClear ()

Hatua ya kwanza unayohitaji kuchukua katika kazi hii ni futa rangi na bafa ya Z. Bila hatua hizi, michoro za zamani bado zinaweza kuonekana chini ya michoro mpya na vitu vilivyochorwa visingekuwa mahali sahihi kwenye skrini.

    onyesha batili () {// Futa skrini na Z-bafa glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

1994315 12 1
1994315 12 1

Hatua ya 3. Ongeza glBegin () na glEnd ()

OpenGL inafafanua vitu kama mchanganyiko wa poligoni nyingi. Kutumia glBegin () amri, unaweka vizuri penseli ambayo itachora sura. Kuinua penseli na kuanza sura mpya, lazima utumie mwisho () amri. Katika mafunzo haya utakuwa unatumia GL_POLYGON kuteka kila upande wa mchemraba lakini inawezekana kutumia chaguzi zingine za kigezo kama vile GL_LINE, GL_QUAD, au GL_TRIANGLE kuunda maumbo mengine.

  • Hapa utakuwa unaanza na mbele ya mchemraba wako. Baadaye utaongeza rangi kwa pande zote 6.
  • // Upande wa rangi nyingi - MBELE ya glBegin (GL_POLYGON); // Vertices itaongezwa katika hatua inayofuata glEnd ();

1994315 13 1
1994315 13 1

Hatua ya 4. Ongeza glVertex3f ()

Mara tu unaposema kuwa unataka kuanza poligoni yako, unahitaji fafanua vipeo ya kitu. glVertex ina aina nyingi kulingana na kile unataka kufanya na kitu chako.

  • Ya kwanza ni vipimo vipi unavyofanya kazi. Ya 3 hapo juu kwenye glVertex3f inasema unachora katika vipimo 3. Inawezekana pia kufanya kazi kwa vipimo 2 au 4. F hapo juu kwenye glVertex3f inasema unafanya kazi na nambari za alama zinazoelea. Unaweza pia kutumia kaptula, nambari au maradufu.
  • Angalia kuwa alama hizi zimefafanuliwa katika a kinyume na saa namna. Hii sio muhimu sana kwa sasa lakini unapoanza kufanya kazi na taa, maumbo, na sura ya kutazama, hii itakuwa muhimu sana kwa hivyo pata tabia ya kufafanua vidokezo vyako kinyume na saa sasa.
  • Ongeza ongeza vipeo kati ya mistari ya glBegin () na glEnd ().
  • // Upande wa rangi nyingi - MBELE ya 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

Hatua ya 5. Ongeza glColor3f ()

glColor inafanya kazi kwa njia sawa na glVertex. Unaweza kufafanua vidokezo kama kaptula, nambari, maradufu, au kuelea. Kila rangi ina thamani kutoka 0 hadi 1. Zote 0 hufanya alama kuwa nyeusi na zote 1 zitafanya alama kuwa nyeupe. 3 katika glColor3f () inahusu mfumo wa rangi ya RGB bila kituo cha alpha. Alfa ya rangi hufafanua uwazi wake. Kubadilisha kiwango cha alpha, tumia glColor4f () na parameta ya mwisho ikiwa thamani ya 0 hadi 1 kwa opaque kwa uwazi.

  • Unapopigia glColor3f () kila vertex iliyochorwa kutoka hapo itakuwa ya rangi hiyo. Kwa hivyo, ikiwa unataka vipeo vyote vinne kuwa nyekundu, weka rangi mara moja wakati wowote kabla ya amri za glVertex3f () na vipeo vyote vitakuwa nyekundu.
  • Upande wa Mbele uliofafanuliwa hapa chini unaonyesha jinsi ya kufafanua rangi mpya kwa kila kitabaka. Unapofanya hivyo, unaweza kuona mali ya kupendeza ya rangi za OpenGL. Kwa kuwa kila vertex ya poligoni ina rangi yake, OpenGL itachanganya rangi moja kwa moja! Hatua inayofuata itaonyesha jinsi ya kupeana vipeo vinne vyenye rangi moja.
  • // Upande wa rangi nyingi - MBELE ya glBegin (GL_POLYGON); glColor3f (1.0, 0.0, 0.0); glVertex3f (0.5, -0.5, -0.5); // P1 ni nyekundu glColor3f (0.0, 1.0, 0.0); glVertex3f (0.5, 0.5, -0.5); // P2 ni glColor3f ya kijani (0.0, 0.0, 1.0); glVertex3f (-0.5, 0.5, -0.5); // P3 ni glColor3f ya bluu (1.0, 0.0, 1.0); glVertex3f (-0.5, -0.5, -0.5); // P4 ni zambarau glEnd ();

1994315 15 1
1994315 15 1

Hatua ya 6. Shughulikia pande zingine

Fanya kazi mahali pa kila kitambulisho kitakuwa kwa pande zingine tano za mchemraba lakini kwa urahisi, hizi zimehesabiwa kwako na zimejumuishwa kwenye mwisho kuonyesha () kazi chini.

    // Upande mweupe - BURE 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 (); // Upande wa zambarau - Glgin glight (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 (); // Upande wa Kijani - glgin ya LEFT (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 (); // Upande wa Bluu - glasi ya TOP (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 (); // Upande mwekundu - BOTTOM 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 (); }

  • Tunataka pia kuongeza katika mistari miwili ya mwisho ya nambari kwa kazi hii. Hizi ni glFlush ();

    na glutSwapBuffers ();

    ambayo hutupa athari ya kugongana mara mbili uliyojifunza juu ya hapo awali.

Sehemu ya 3 ya 3: Mwingiliano wa Mtumiaji

1994315 16 1
1994315 16 1

Hatua ya 1. Ongeza Funguo maalum ()

Umekamilika lakini kwa sasa, unaweza kuchora mchemraba lakini hauna njia ya kuizungusha. Ili kufanya hivyo, utakuwa unda Funguo maalum () kazi kuturuhusu kubonyeza funguo za mshale na kuzungusha mchemraba!

  • Kazi hii ndio sababu ulitangaza anuwai ya ulimwengu kuzunguka_x na kuzungusha_y. Unapobonyeza vitufe vya mshale wa kulia na kushoto, zungusha_ zitazidishwa au kupungua kwa digrii 5. Vivyo hivyo, unapobonyeza vitufe vya juu na chini vya mshale, zungusha_x zitabadilika ipasavyo.
  • vitupu maalum (kitufe cha int, int x, int y) {// Mshale wa kulia - ongeza mzunguko kwa digrii 5 ikiwa (ufunguo == GLUT_KEY_RIGHT) zungusha_y + = 5; // Mshale wa kushoto - punguza mzunguko kwa digrii 5 nyingine ikiwa (ufunguo == GLUT_KEY_LEFT) zunguka_y - = 5; vinginevyo ikiwa (ufunguo == GLUT_KEY_UP) zungusha_x + = 5; vinginevyo ikiwa (ufunguo == GLUT_KEY_DOWN) zungusha_x - = 5; // Omba sasisho la kuonyesha glutPostRedisplay (); }

1994315 17 1
1994315 17 1

Hatua ya 2. Ongeza glRotate ()

Taarifa yako ya mwisho ni kuongeza taarifa ambayo itazunguka kitu chako. Rudi kwenye kazi ya kuonyesha () na kabla ya upande wa MBELE, ongeza mistari hii:

    // Rudisha mabadiliko glLoadIdentity (); // Zungusha wakati mtumiaji anabadilisha zunguka_x na zungusha_y glRotatef (zungusha_x, 1.0, 0.0, 0.0); glRotatef (zungusha_y, 0.0, 1.0, 0.0); // Upande wa rangi nyingi - MBELE….

  • Kwanza ona kwamba sintaksia ya glRotatef () ni sawa na ile ya glColor3f () na glVertex3f () lakini inahitaji kila wakati vigezo 4. Kigezo cha kwanza ni kiwango cha mzunguko wa kutumiwa. Vigezo vitatu vifuatavyo hufafanua ni mhimili gani wa kuzunguka na wa kwanza kuwa mhimili wa x, pili kuwa mhimili y, na tatu kuwa mhimili wa z. Hivi sasa unahitaji kuzunguka tu juu ya x na y-axis.
  • Mabadiliko yote unayoandika kwenye programu yako yanahitaji mistari sawa na hii. Kwa dhana, unaweza kufikiria hii kama kuzungusha kitu chako juu ya mhimili wa x na kiwango kilichoelezewa na mzunguko_x na kisha kuzunguka kwenye mhimili wa y kwa kuzungusha_y. Walakini, OpenGL inachanganya taarifa hizi zote kuwa mabadiliko moja ya tumbo. Kila wakati unapopigia kazi ya kuonyesha, unaunda matrix ya mabadiliko na GlLoadIdentity () inakuhakikishia kuwa utaanza na tumbo mpya katika kila kupita.
  • Kazi zingine za mabadiliko unazoweza kutumia ni glTranslatef () na glScalef (). Kazi hizi ni sawa na glRotatef () isipokuwa zinachukua tu vigezo 3, x, y, na z ni kiasi cha kutafsiri au kupima kitu.
  • Ili kupata athari sahihi wakati wa kutumia mabadiliko yote matatu kwa kitu kimoja, unahitaji kuyatumia kwa mpangilio sahihi. Waandike kila wakati kwa mpangilio glTranslate, glRotate, kisha glScale. OpenGL kimsingi hutumia mabadiliko kwa njia ya chini. Ili kuelewa hii jaribu kufikiria ni nini mchemraba rahisi wa 1x1x1 ungeonekana kama na mabadiliko ikiwa OpenGL itayatumia kutoka juu hadi chini na ikiwa OpenGL inayatumia kutoka chini hadi juu.
1994315 18 1
1994315 18 1

Hatua ya 3. Ongeza amri zifuatazo ili kupima mchemraba kwa 2 kando ya mhimili x, 2 kando ya mhimili y, zungusha mchemraba kwa digrii 180 juu ya mhimili, na utafsiri mchemraba kwa 0.1 kando ya mhimili x

Hakikisha kupanga hizi pamoja na maagizo ya awali ya GlRotate () kwa mpangilio sahihi kama ilivyoelezwa hapo juu. (Ikiwa haujui, hii imefanywa hii katika nambari ya mwisho mwisho wa mafunzo.)

    // Mabadiliko mengine 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

Hatua ya 4. Kusanya na kuendesha nambari yako

Kwa kudhani unatumia gcc kama mkusanyaji wako, endesha amri hizi kutoka kwa terminal yako kukusanya na kujaribu programu yako.

    Kwenye Linux: gcc mchemraba.c -o mchemraba -lglut -lGL./ mycube Kwenye Mac: gcc -o foo foo.c -framework GLUT -framework OpenGL./ mycube Kwenye Windows: gcc -Wall -ofoo foo.c -lglut32cu - lglu32 -lopengl32./ mycube

1994315 20 1
1994315 20 1

Hatua ya 5. Angalia msimbo wako kamili

Inapaswa kuwa kama hii:

    // // Faili: mycube.c // Mwandishi: Matt Daisley // Imeundwa: 4/25/2012 // Mradi: Nambari ya chanzo ya Tengeneza Mchemraba katika OpenGL // Maelezo: Inaunda dirisha la OpenGL na kuchora mchemraba wa 3D / / Kwamba mtumiaji anaweza kuzunguka kwa kutumia vitufe vya mshale // // Udhibiti: Mshale wa Kushoto - Zungusha Kushoto // Mshale wa Kulia - Zungusha Kulia // Mshale Juu - Zungusha Juu // Mshale wa Chini - Zungusha Chini // ------ -------------------------------------------------- - // Inajumuisha // -------------------------------------- ---------- ---------------------------------- / ----------------------------------- --------- onyesho batili (); vitupu maalum (); // ------------------------------------------------ ---------- // Vigezo vya Ulimwenguni // ---------------------------------- ------------------------ kuzunguka mara mbili_y = 0; zungusha mara mbili_x = 0; // ------------------------------------------------ ---------- // onyesha () kazi ya kupiga simu // ------------------------------ ----------- // Rudisha mabadiliko glLoadIdentity (); // Mabadiliko mengine // glTranslatef (0.1, 0.0, 0.0); // Haijumuishwa // glRotatef (180, 0.0, 1.0, 0.0); // Sio pamoja // Zungusha wakati mabadiliko ya mtumiaji yanazunguka_x na zungusha_y glRotatef (zungusha_x, 1.0, 0.0, 0.0); glRotatef (zungusha_y, 0.0, 1.0, 0.0); // Mabadiliko mengine // glScalef (2.0, 2.0, 0.0); // Sio pamoja // Upande wa rangi nyingi - MBELE ya glBegin (GL_POLYGON); glColor3f (1.0, 0.0, 0.0); glVertex3f (0.5, -0.5, -0.5); // P1 ni nyekundu glColor3f (0.0, 1.0, 0.0); glVertex3f (0.5, 0.5, -0.5); // P2 ni glColor3f ya kijani (0.0, 0.0, 1.0); glVertex3f (-0.5, 0.5, -0.5); // P3 ni glColor3f ya bluu (1.0, 0.0, 1.0); glVertex3f (-0.5, -0.5, -0.5); // P4 ni zambarau glEnd (); // Upande mweupe - BURE 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 (); // Upande wa zambarau - Glgin glight (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 (); // Upande wa Kijani - glgin ya LEFT (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 (); // Upande wa Bluu - glasi ya TOP (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 (); // Upande mwekundu - BOTTOM 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 (); } // ----------------------------------------------- ----------- // maalumKey () Kazi ya Kupiga tena // -------------------------- ---------------------- digrii ikiwa (ufunguo == GLUT_KEY_RIGHT) zungusha_y + = 5; // Mshale wa kushoto - punguza mzunguko kwa digrii 5 nyingine ikiwa (ufunguo == GLUT_KEY_LEFT) zunguka_y - = 5; vinginevyo ikiwa (ufunguo == GLUT_KEY_UP) zungusha_x + = 5; vinginevyo ikiwa (ufunguo == GLUT_KEY_DOWN) zungusha_x - = 5; // Omba sasisho la kuonyesha glutPostRedisplay (); } // ----------------------------------------------- ----------- // kuu () kazi // ------------------------------ ---------------------- & argc, argv); // Omba densi ya rangi ya kweli iliyopigwa mara mbili na Z-buffer glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); // Unda glasi ya GlCreateWindow ("Mchemraba wa Kutisha"); // Wezesha Z-buffer kina mtihani glEnable (GL_DEPTH_TEST); // Kazi za kupigia simu glutDisplayFunc (onyesha); glutSpecialFunc (maalumKey); // Pitia udhibiti kwa GLUT kwa hafla za glutMainLoop (); // Kurudi kwa OS kurudi 0; }

Ilipendekeza: