Yuav Ua Li Cas Cube hauv OpenGL (nrog Duab)

Cov txheej txheem:

Yuav Ua Li Cas Cube hauv OpenGL (nrog Duab)
Yuav Ua Li Cas Cube hauv OpenGL (nrog Duab)

Video: Yuav Ua Li Cas Cube hauv OpenGL (nrog Duab)

Video: Yuav Ua Li Cas Cube hauv OpenGL (nrog Duab)
Video: Howto: mimikatz как использовать для получения пароля администратора Windows 2024, Plaub Hlis Ntuj
Anonim

OpenGL yog lub cuab yeej muaj tswv yim 3D siv los kos cov xwm txheej peb-seem los ntawm cov txheej txheem yooj yim. Kab lus no yuav qhia koj yuav ua li cas kos lub voos xwmfab yooj yim uas koj tuaj yeem tig mus saib hauv peb qhov ntev!

Rau txoj haujlwm no koj yuav xav tau tus kws kho kab lis kev cai thiab qee qhov kev paub ntawm C programming.

Cov kauj ruam

Ntu 1 ntawm 3: Kev teeb tsa thawj zaug

1994315 1 1
1994315 1 1

Kauj Ruam 1. Nruab OpenGL Txhawm rau pib ua raws cov theem no txhawm rau txhim kho OpenGL ntawm koj lub system

Yog tias koj twb muaj OpenGL, nrog rau kev txhim kho C compiler tau teeb tsa, koj tuaj yeem hla cov theem no thiab mus rau tom ntej.

1994315 2 1
1994315 2 1

Kauj Ruam 2. Tsim daim ntawv

Tsim cov ntaub ntawv tshiab hauv koj tus lej uas koj nyiam kho thiab khaws nws li mycube.c

1994315 3 1
1994315 3 1

Kauj ruam 3. Ntxiv #includes

Cov no yog qhov yooj yim suav nrog koj yuav xav tau rau koj qhov program. Nws yog ib qho tseem ceeb kom paub tias muaj qhov sib txawv tiag tiag suav nrog xav tau rau cov haujlwm sib txawv. Nco ntsoov suav tag nrho cov no kom ntseeg tau tias koj txoj haujlwm muaj ntau yam thiab tuaj yeem ua haujlwm rau ib tus neeg siv.

    // Xws li #include #include #include #define GL_GLEXT_PROTOTYPES #ifdef _APPLE_ #include #else #include #endif

1994315 4 1
1994315 4 1

Kauj Ruam 4. Ntxiv cov qauv ua haujlwm thiab hloov pauv thoob ntiaj teb

Koj cov kauj ruam tom ntej yog tshaj tawm qee qhov qauv ua haujlwm.

    // Function Prototypes void display (); tsis muaj dab tsi specialKeys (); // Global Variables ob npaug rot_y = 0; ob npaug rot_x = 0;

1994315 5 1
1994315 5 1

Kauj Ruam 5. Teeb lub ntsiab () ua haujlwm

    int lub ntsiab (int argc, char* argv ) {// Pib GLUT thiab txheej txheem cov neeg siv tsis glutInit (& argc, argv); // Thov muab ob npaug rau qhov tseeb xim qhov rai nrog Z-buff glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);

  • Cov lus no teeb tsa koj ib puag ncig. Qhov loj tshaj plaws kom nco qab thaum sau OpenGL cov haujlwm yog qhov koj yuav tsum nug txhua yam. Qhov no xav kom koj muaj kev nkag siab ntau ntxiv txog koj li haujlwm li cas thiab yam koj xav tau suav nrog kom tau txais kev ua haujlwm uas koj xav tau. Hauv kab no, koj yuav teeb tsa cov zaub nrog ob npaug buffering, RGB xim, thiab Z-tsis.
  • Ob chav tsis yog cov txheej txheem siv hauv cov khoos kas kho duab kom tshem tawm qhov teeb meem uas tshwm sim vim li cas cov duab raug kos rau ntawm lub vijtsam. Txhua lub sijhawm koj rov ua qhov xwm txheej, cov duab yuav tsum xub muab tshem tawm tom qab ntawv cov ntaub ntawv tshiab yuav raug kos. Yog tsis muaj ob txoj hauv kev koj yuav pom qhov ua rau pom kev zoo li lub vijtsam raug tshem tawm thiab rov ua dua.
  • Qhov teeb meem no raug kho los ntawm kev ntxiv qhov thib ob tsis kos rau. Nrog rau txoj hauv kev no, daim duab tau kos rau thawj qhov tsis thiab qhov tsis pom ntawd tau qhia rau koj. Cov thav duab tom ntej yuav raug kos rau qhov thib ob thiab thaum qhov ntawd ua tiav, ob qhov tsis sib xws yuav hloov chaw. Koj yuav pom tam sim thib ob, tab sis, zais los ntawm peb, thawj qhov tsis raug tshem tawm thiab rov sau dua nrog tus ncej thib peb uas yuav raug pauv thaum ua tiav.
  • Koj kuj tseem xav kom qhib lub RGB xim system hauv koj lub qhov rais.
  • Z-buffering yog li cas koj tau txais cov teebmeem 3D uas koj xav tau. OpenGL siv peb qhov kev sib koom ua ke nrog x, y thiab z axes. Txhawm rau muab cov txiaj ntsig uas ib yam khoom tau ze rau koj nws txoj haujlwm ntawm z axis tau nce, txawm li cas los xij, kom ua rau nws tshwm sim deb dua nws txoj haujlwm ntawm z axis tau qis dua.
1994315 6 1
1994315 6 1

Kauj Ruam 6. Tsim lub qhov rai

Cov kauj ruam tom ntej yog tsim lub qhov rais nyob rau hauv uas koj yuav kos lub voos xwmfab. Hauv qhov kev qhia no, lub qhov rais hu ua "Awesome Cube".

    // Tsim qhov rai glutCreateWindow ("Cube Txaus");

1994315 7 1
1994315 7 1

Kauj Ruam 7. Pab kom ntsuas qhov tob

OpenGL yog cov lus nruj heev uas nws tsis xav tias muaj qhov tshwj xeeb tau qhib. Txhawm rau koj txoj haujlwm kom raug tso tawm hauv 3-qhov ntev siv Z-tsis uas koj tau saib ua ntej, koj yuav tsum tau ua pab kom tob-xeem. Raws li koj txuas ntxiv tshawb xyuas OpenGL, koj yuav pom ntau yam tshwj xeeb uas koj yuav xav tau kom suav nrog teeb pom kev zoo, textures, cull-facing thiab ntau ntxiv.

    // Pab kom Z-buff qhov tob ntsuas glEnable (GL_DEPTH_TEST);

1994315 8 1
1994315 8 1

Kauj Ruam 8. Ntxiv kev hu rov qab

Nov yog cov haujlwm rov qab uas koj tau sau cov qauv rau ua ntej lawm. Txhua lub sijhawm dhau los ntawm lub voj loj, cov haujlwm no yuav raug hu. Cov zaub muaj nuj nqi rov ua qhov xwm txheej raws li kev hloov pauv mus rau qhov hloov pauv uas tau ua txij li kev hu yav dhau los. Cov haujlwm tshwj xeebKey tso cai rau peb los cuam tshuam nrog txoj haujlwm.

    // Hu rov qab ua haujlwm glutDisplayFunc (zaub); glutSpecialFunc (tshwj xeebKeys);

1994315 9 1
1994315 9 1

Kauj Ruam 9. Pib MainLoop

Qhov no yuav rov qab ua lub luag haujlwm tseem ceeb kom txog thaum koj kaw qhov program kom tso cai rau kev ua yeeb yaj kiab thiab cov neeg siv cuam tshuam.

    // Dhau kev tswj hwm rau GLUT rau cov xwm txheej glutMainLoop (); // Rov qab mus rau OS rov qab 0; }

Ntu 2 ntawm 3: Cov zaub () Muaj nuj nqi

1994315 10 1
1994315 10 1

Kauj Ruam 1. Nkag siab lub hom phiaj ntawm txoj haujlwm no

Txhua txoj haujlwm ntawm kev kos koj lub voos xwmfab yuav ua tiav hauv txoj haujlwm no. Lub tswv yim dav tom qab koj lub voos xwmfab yog kos txhua rau rau sab ntawm tus kheej thiab tso rau hauv txoj haujlwm tsim nyog.

Lub tswv yim, txhua sab yuav raug kos los ntawm kev txhais plaub fab thiab cia OpenGL txuas cov kab thiab sau nws nrog cov xim uas koj txhais tau. Hauv qab no yog cov kauj ruam los ua qhov no

1994315 11 1
1994315 11 1

Kauj ruam 2. Ntxiv glClear ()

Thawj kauj ruam koj yuav tsum tau ua hauv txoj haujlwm no yog tshem cov xim thiab Z tsis. Tsis muaj cov kauj ruam no, cov duab kos qub tseem tuaj yeem pom hauv qab cov duab kos tshiab thiab cov khoom kos yuav tsis nyob hauv qhov chaw raug ntawm lub vijtsam.

    void display () {// Clear screen thiab Z-buff glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

1994315 12 1
1994315 12 1

Kauj Ruam 3. Ntxiv glBegin () thiab glEnd ()

OpenGL txhais cov khoom ua ke ua ke ntawm ntau lub duab sib txawv. Siv cov glBegin () hais kom ua, koj ua tau zoo sau tus xaum uas yuav kos duab. Txhawm rau nqa tus xaum thiab pib lub ntsej muag tshiab, koj yuav tsum siv lub glEnd () hais kom ua Hauv qhov kev qhia no koj yuav siv GL_POLYGON txhawm rau kos txhua sab ntawm lub voos xwmfab tab sis nws muaj peev xwm siv lwm yam kev ntsuas ntsuas xws li GL_LINE, GL_QUAD, lossis GL_TRIANGLE los tsim lwm yam duab.

  • Ntawm no koj yuav pib nrog lub hauv ntej ntawm koj lub voos xwmfab. Tom qab ntawd koj yuav ntxiv xim rau txhua 6 sab.
  • // Ntau sab xim - PEM HAUV glBegin (GL_POLYGON); // Vertices yuav muab ntxiv rau theem tom ntej glEnd ();

1994315 13 1
1994315 13 1

Kauj Ruam 4. Ntxiv glVertex3f ()

Thaum koj tau hais tias koj xav pib koj lub polygon, koj yuav tsum txhais cov vertices ntawm qhov khoom. glVertex muaj ntau daim ntawv nyob ntawm seb koj xav ua dab tsi nrog koj lub hom phiaj.

  • Thawj yog pes tsawg qhov koj tab tom ua haujlwm. 3 saum toj no hauv glVertex3f hais tias koj tab tom kos duab hauv 3 qhov ntev. Nws tseem tuaj yeem ua haujlwm hauv 2 lossis 4 qhov ntev. Qhov f saum toj no hauv glVertex3f hais tias koj tab tom ua haujlwm nrog cov lej lej ntab. Koj tseem tuaj yeem siv luv, cov lej lossis ob npaug.
  • Pom tias cov ntsiab lus no tau teev tseg hauv a counter-clockwise yam. Qhov no tsis tseem ceeb heev tam sim no tab sis thaum koj pib ua haujlwm nrog teeb pom kev zoo, textures, thiab cull-facing, qhov no yuav dhau los ua qhov tseem ceeb heev yog li tau txais tus cwj pwm ntawm kev txhais koj cov ntsiab lus rov qab-clockwise tam sim no.
  • Ntxiv ntxiv cov vertices ntawm kab glBegin () thiab glEnd ().
  • // Ntau sab xim - PEM HAUV 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

Kauj Ruam 5. Ntxiv glColor3f ()

glColor ua haujlwm zoo ib yam li glVertex. Koj tuaj yeem txhais cov ntsiab lus xws li luv, cov lej, ob npaug, lossis ntab. Txhua xim muaj tus nqi ntawm 0 txog 1. Txhua 0's ua rau lub ntsiab lus dub thiab tag nrho 1's yuav ua rau lub ntsiab lus dawb. 3 hauv glColor3f () hais txog RGB xim system uas tsis muaj alpha channel. Cov alpha ntawm cov xim piav qhia nws cov pob tshab. Txhawm rau hloov qib alpha, siv glColor4f () nrog qhov ntsuas kawg yog tus nqi 0 txog 1 rau qhov tsis pom kev kom pob tshab.

  • Thaum koj hu rau glColor3f () txhua lub vertex kos los ntawm lub ntsiab lus ntawd yuav yog xim ntawd. Yog li, yog tias koj xav kom tag nrho plaub lub kaum sab xis kom liab, tsuas yog teeb tsa xim ib zaug txhua lub sijhawm ua ntej glVertex3f () cov lus txib thiab txhua lub kaum sab xis yuav liab.
  • Sab pem hauv ntej tau piav qhia hauv qab no qhia yuav ua li cas txhawm rau txhais cov xim tshiab rau txhua lub vertex. Thaum koj ua qhov no, koj tuaj yeem pom cov khoom muaj txiaj ntsig ntawm OpenGL xim. Txij li txhua lub vertex ntawm lub polygon muaj nws tus kheej xim, OpenGL yuav cia li muab cov xim! Cov kauj ruam tom ntej yuav qhia yuav ua li cas muab plaub lub kaum sab xis nrog tib xim.
  • // Ntau sab xim - PEM HAUV glBegin (GL_POLYGON); glColor3f (1.0, 0.0, 0.0); glVertex3f (0.5, -0.5, -0.5); // P1 yog liab glColor3f (0.0, 1.0, 0.0); glVertex3f (0.5, 0.5, -0.5); // P2 yog ntsuab glColor3f (0.0, 0.0, 1.0); glVertex3f (-0.5, 0.5, -0.5); // P3 yog xiav glColor3f (1.0, 0.0, 1.0); glVertex3f (-0.5, -0.5, -0.5); // P4 yog xim liab glEnd ();

1994315 15 1
1994315 15 1

Kauj Ruam 6. Ua lwm sab

Ua haujlwm seb qhov chaw ntawm txhua lub vertex yuav yog rau lwm tsib sab ntawm lub voos xwmfab tab sis kom yooj yim, cov no tau suav rau koj thiab suav nrog hauv cov lus kawg () muaj nuj nqi hauv qab no

    // Sab dawb - RAWS 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 (); // Ntshav sab - RIGHT 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 (); // Sab ntsuab - LEFT 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 (); // Sab xiav - 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 (); // Sab liab - 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 (); }

  • Peb kuj xav ntxiv ob kab kawg ntawm cov cai rau txoj haujlwm no. Cov no yog glFlush ();

    thiab glutSwapBuffers ();

    uas muab rau peb qhov cuam tshuam ob npaug uas koj tau kawm txog yav dhau los.

Ntu 3 ntawm 3: Tus Neeg Siv Kev Sib Tham

1994315 16 1
1994315 16 1

Kauj ruam 1. Ntxiv specialKeys ()

Koj yuav luag tiav tab sis tam sim no, koj tuaj yeem kos lub voos xwmfab tab sis tsis muaj txoj hauv kev tig nws. Ua li no, koj yuav tsim tshwj xeebKeys () muaj nuj nqi los tso cai rau peb nias lub pob yuam sij thiab tig lub voos xwmfab!

  • Txoj haujlwm no yog vim li cas koj thiaj tshaj tawm thoob ntiaj teb kev hloov pauv tig_x thiab tig_y. Thaum koj nias sab xis thiab sab laug xub, tig_y yuav nce lossis nqis qis dua 5 degrees. Ib yam li ntawd, thaum koj nias tus xub thiab nqis xub tuav, tig_x yuav hloov raws li.
  • void specialKeys (int qhov tseem ceeb, int x, int y) {// Txoj cai xub - nce kev sib hloov los ntawm 5 degree yog (qhov tseem ceeb == GLUT_KEY_RIGHT) tig_y += 5; // Sab laug xub - txo kev sib hloov los ntawm 5 degree ntxiv yog (qhov tseem ceeb == GLUT_KEY_LEFT) tig_y - = 5; lwm tus yog (qhov tseem ceeb == GLUT_KEY_UP) tig_x += 5; lwm tus yog (qhov tseem ceeb == GLUT_KEY_DOWN) tig_x -= 5; // Thov tso saib hloov tshiab glutPostRedisplay (); }

1994315 17 1
1994315 17 1

Kauj ruam 2. Ntxiv glRotate ()

Koj cov lus kawg yog ntxiv cov lus uas yuav tig koj lub hom phiaj. Rov qab mus rau cov zaub () muaj nuj nqi thiab ua ntej ntawm sab xub ntiag, ntxiv cov kab no:

    // Pib dua kev hloov pauv glLoadIdentity (); // Tig thaum tus neeg siv hloov tig_x thiab tig_y glRotatef (tig_x, 1.0, 0.0, 0.0); glRotatef (tig_y, 0.0, 1.0, 0.0); // Ntau yam xim sab - POM ZOO….

  • Ua ntej tshaj tawm tias cov syntax ntawm glRotatef () ua zoo ib yam li glColor3f () thiab glVertex3f () tab sis ib txwm xav tau 4 qhov ntsuas. Thawj qhov ntsuas yog qib kev sib hloov uas yuav tsum tau siv. Peb qhov kev ntsuas tom ntej txheeb xyuas lub axis twg uas yuav tig nrog thawj yog x axis, thib ob yog y axis, thiab thib peb yog z axis. Tam sim no koj tsuas yog xav tau tig txog x thiab y-axis.
  • Txhua qhov kev hloov pauv uas koj sau hauv koj qhov program xav tau kab zoo ib yam li qhov no. Lub tswv yim, koj tuaj yeem xav txog qhov no tig koj lub hom phiaj txog x axis los ntawm tus lej txhais los ntawm rot_x thiab tom qab ntawd tig ib ncig ntawm y axis los ntawm rot_y. Txawm li cas los xij, OpenGL sib txuas tag nrho cov lus no rau hauv ib qho kev hloov pauv hauv matrix. Txhua lub sijhawm koj hu rau cov lus tso tawm, koj tsim kev hloov pauv hauv matrix thiab glLoadIdentity () paub tseeb tias koj yuav pib nrog tus lej tshiab hauv txhua kis.
  • Lwm qhov kev hloov pauv uas koj tuaj yeem thov yog glTranslatef () thiab glScalef (). Cov haujlwm no zoo ib yam li glRotatef () nrog qhov tshwj tsis yog lawv tsuas yog siv 3 qhov ntsuas, x, y, thiab z nyiaj los txhais lossis ntsuas cov khoom.
  • Txhawm rau kom tau txais cov txiaj ntsig raug thaum siv tag nrho peb qhov kev hloov pauv mus rau ib qho khoom, koj yuav tsum tau siv lawv hauv qhov kev txiav txim raug. Ib txwm sau lawv hauv qhov kev txiav txim glTranslate, glRotate, tom qab ntawd glScale. OpenGL qhov tseem ceeb siv rau kev hloov pauv hauv qab. Txhawm rau nkag siab qhov no sim xav txog qhov yooj yim 1x1x1 lub voos xwmfab yuav zoo li nrog kev hloov pauv yog tias OpenGL siv lawv los ntawm sab saum toj mus rau hauv qab thiab yog OpenGL thov lawv los ntawm hauv qab mus rau saum.
1994315 18 1
1994315 18 1

Kauj Ruam 3. Ntxiv cov lus txib hauv qab no los ntsuas lub voos xwmfab los ntawm 2 raws x-axis, 2 raws y-axis, tig lub voos xwmfab 180 degrees txog y-axis, thiab txhais lub voos xwmfab 0.1 raws x-axis

Nco ntsoov npaj cov no nrog rau yav dhau los glRotate () cov lus txib hauv qhov kev txiav txim raug raws li tau piav qhia saum toj no. (Yog tias koj tsis paub meej, qhov no tau ua tiav hauv kab lus kawg ntawm qhov kawg ntawm kev qhia.)

    // Lwm yam kev hloov pauv 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

Kauj Ruam 4. Sau thiab sau koj cov cai

Piv txwv tias koj tab tom siv gcc ua koj tus neeg sau, khiav cov lus txib no los ntawm koj lub davhlau ya nyob twg los suav sau thiab sim koj li program.

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

1994315 20 1
1994315 20 1

Kauj Ruam 5. Txheeb xyuas koj tus lej ua tiav

Nws yuav tsum zoo li no:

    // // File: mycube.c // Author: Matt Daisley // Created: 4/25/2012 // Project: Source code for Make a Cube in OpenGL // Nqe lus piav qhia: Tsim lub qhov rai OpenGL thiab kos lub voos xwmfab 3D / Tias tus neeg siv tuaj yeem tig siv tus xub xub // // Kev tswj: xub xub -Tig sab laug // xub xub -Tig sab xis // nce xub -tig rov // nqis xub -tig rov // ------ ----------------------------------------------------------------------- -// Xws li // ------------------------------------------- --------------- #include #include #include #define GL_GLEXT_PROTOTYPES #ifdef _APPLE_ #include #else #include #endif // ------------- --------------------------------------------- // Function Prototypes / / ------------------------------------------------------- --------- void display (); tsis muaj dab tsi specialKeys (); // ------------------------------------------------------- ---------- // Ntiaj teb Variables // ---------------------------------- ------------------------ ob npaug rot_y = 0; ob npaug rot_x = 0; // ------------------------------------------------------- ---------- // display () Callback function // ------------------------------- --------------------------- void display () {// Clear screen and Z-buff glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Pib dua kev hloov pauv glLoadIdentity (); // Lwm yam kev hloov pauv // glTranslatef (0.1, 0.0, 0.0); // Tsis suav nrog // glRotatef (180, 0.0, 1.0, 0.0); // Tsis suav nrog // Tig thaum cov neeg siv hloov pauv_x thiab tig_y glRotatef (tig_x, 1.0, 0.0, 0.0); glRotatef (tig_y, 0.0, 1.0, 0.0); // Lwm yam kev hloov pauv // glScalef (2.0, 2.0, 0.0); // Tsis suav nrog // Ntau sab xim - PAWG glBegin (GL_POLYGON); glColor3f (1.0, 0.0, 0.0); glVertex3f (0.5, -0.5, -0.5); // P1 yog liab glColor3f (0.0, 1.0, 0.0); glVertex3f (0.5, 0.5, -0.5); // P2 yog ntsuab glColor3f (0.0, 0.0, 1.0); glVertex3f (-0.5, 0.5, -0.5); // P3 yog xiav glColor3f (1.0, 0.0, 1.0); glVertex3f (-0.5, -0.5, -0.5); // P4 yog xim liab glEnd (); // Sab dawb - RAWS 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 (); // Ntshav sab - RIGHT 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 (); // Sab ntsuab - LEFT 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 (); // Sab xiav - 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 (); // Sab liab - 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 (); } // ------------------------------------------------------- ----------- // specialKeys () Callback Function // ------------------------------ ---------------------------- tsis muaj dab tsi specialKeys (int qhov tseem ceeb, int x, int y) {// Txoj cai xub-nce kev sib hloov los ntawm 5 degree yog (qhov tseem ceeb == GLUT_KEY_RIGHT) tig_y += 5; // Sab laug xub - txo kev sib hloov los ntawm 5 degree ntxiv yog (qhov tseem ceeb == GLUT_KEY_LEFT) tig_y - = 5; lwm tus yog (qhov tseem ceeb == GLUT_KEY_UP) tig_x += 5; lwm tus yog (qhov tseem ceeb == GLUT_KEY_DOWN) tig_x -= 5; // Thov tso saib hloov tshiab glutPostRedisplay (); } // ------------------------------------------------------- ----------- // main () muaj nuj nqi // ------------------------------- --------------------------- int lub ntsiab (int argc, char* argv ) {// Initialize GLUT thiab txheej txheem cov neeg siv tsis glutInit (& argc, argv); // Thov muab ob npaug rau qhov tseeb xim qhov rai nrog Z-buff glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); // Tsim qhov rai glutCreateWindow ("Cube Txaus"); // Pab kom Z-buff qhov tob ntsuas glEnable (GL_DEPTH_TEST); // Hu rov qab ua haujlwm glutDisplayFunc (zaub); glutSpecialFunc (tshwj xeebKeys); // Dhau kev tswj hwm rau GLUT rau cov xwm txheej glutMainLoop (); // Rov qab mus rau OS rov qab 0; }

Pom zoo: