OpenGL -де текшені қалай жасауға болады (суреттермен)

Мазмұны:

OpenGL -де текшені қалай жасауға болады (суреттермен)
OpenGL -де текшені қалай жасауға болады (суреттермен)

Бейне: OpenGL -де текшені қалай жасауға болады (суреттермен)

Бейне: OpenGL -де текшені қалай жасауға болады (суреттермен)
Бейне: флеш-дисктен phoenix OS орнату, компьютердегі Android 2024, Сәуір
Anonim

OpenGL-бұл қарапайым примитивтерден күрделі үшөлшемді көріністерді салу үшін қолданылатын қуатты 3D бағдарламалау құралы. Бұл мақала үш өлшемде көру үшін айналдыруға болатын қарапайым текшені қалай салу керектігін үйретеді!

Бұл жоба үшін сізге код редакторы мен С программалау туралы біраз білім қажет болады.

Қадамдар

3 бөліктің 1 бөлігі: Алғашқы орнату

1994315 1 1
1994315 1 1

Қадам 1. OpenGL орнатыңыз Бастау үшін OpenGL жүйесін жүйеге орнату үшін мына қадамдарды орындаңыз

Егер сізде OpenGL, сонымен қатар үйлесімді C компиляторы орнатылған болса, бұл қадамды өткізіп жіберіп, келесіге өтуге болады.

1994315 2 1
1994315 2 1

Қадам 2. Құжатты жасаңыз

Таңдаулы код редакторында жаңа файл жасаңыз және оны mycube.c ретінде сақтаңыз

1994315 3 1
1994315 3 1

3 -қадам. #Қамтиды

Бұл сіздің бағдарламаңызға қажет негізгі құралдар. Әр түрлі операциялық жүйелер үшін қажет әр түрлі компоненттер бар екенін түсіну маңызды. Бағдарлама әмбебап және кез келген пайдаланушыға жұмыс істей алатынына көз жеткізу үшін осының барлығын енгізуді ұмытпаңыз.

    // қамтиды

1994315 4 1
1994315 4 1

Қадам 4. Функцияның прототиптері мен жаһандық айнымалыларды қосыңыз

Сіздің келесі қадамыңыз - кейбір функция прототиптерін жариялау.

    // Function Prototypes void display (); жарамсыз specialKeys (); // Жаһандық айнымалылар double rotate_y = 0; қос айналдыру_x = 0;

1994315 5 1
1994315 5 1

Қадам 5. main () функциясын орнатыңыз

    int main (int argc, char* argv ) {// GLUT инициализациялаңыз және glutInit пайдаланушы параметрлерін өңдеңіз (& argc, argv); // Z буферлі glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH) бар екі буферлі шын түс терезесін сұрау;

  • Бұл мәлімдеме сіздің ортаны орнатады. OpenGL бағдарламаларын жазу кезінде есте сақтау керек нәрсе - сіз бәрін сұрауыңыз керек. Бұл сізге бағдарламаның қалай жұмыс істейтінін және сізге қажет функционалдылықты алу үшін не қосу керектігін жақсы түсінуді талап етеді. Бұл жолда сіз дисплейді екі буферлі, RGB түсі және Z-буфері бар орнатасыз.
  • Қос буферлеу - бұл графикалық бағдарламаларда бейнелерді экранға шығаруға байланысты туындайтын мәселені жою үшін қолданылатын әдіс. Көріністі қайта жасаған сайын, дисплей алдымен өшірілуі керек, содан кейін жаңа ақпарат салынады. Қосарланған буферсіз сіз жыпылықтайтын әсерді байқайсыз, себебі экран өшіріліп, қайта қайта сызылады.
  • Бұл мәселе екінші буферді қосу арқылы шешіледі. Бұл әдіс көмегімен бірінші буферге сурет салынады және сол буфер сізге көрсетіледі. Келесі кадр екінші буферге тартылады және ол аяқталғаннан кейін екі буфер орын ауыстырады. Сіз бірден екінші буферді көресіз, бірақ бізден жасырын түрде бірінші буфер өшіріліп, үшінші жақтаумен қайта өңделеді, ол аяқталғаннан кейін ауыстырылады.
  • Сіз сондай -ақ қосқыңыз келеді RGB түсі сіздің терезеде жүйе.
  • Z-буферлеу қалаған 3D әсерлерін осылайша алуға болады. OpenGL x, y және z осьтері бар үш өлшемді координат жүйесін қолданады. Нысан сізге жақынырақ әсер ету үшін оның z осіндегі орны жоғарылайды, алайда оның одан әрі көрінуі үшін z осіндегі орны азаяды.
1994315 6 1
1994315 6 1

Қадам 6. Терезені жасаңыз

Келесі қадам - бұл терезені жасаңыз оның ішінде текшені саласыз. Бұл оқулықта терезе «Керемет текше» деп аталады.

    // Терезені құру glutCreateWindow («Керемет текше»);

1994315 7 1
1994315 7 1

Қадам 7. Тереңдік сынағын қосыңыз

OpenGL - бұл қатаң тіл, себебі ол ешқандай арнайы мүмкіндіктер қосылған деп ойламайды. Бағдарлама бұрын қаралған Z буферінің көмегімен 3 өлшемді түрде дұрыс көрсетілуі үшін сізге қажет тереңдікті тексеруге мүмкіндік береді. OpenGL-ді зерттеуді жалғастыра отырып, сіз жарықтандыруды, текстураны, қиғаштықты және тағы басқаларды қосатын көптеген мүмкіндіктерді ашасыз.

    // Z-буферлік тереңдік сынағын қосу glEnable (GL_DEPTH_TEST);

1994315 8 1
1994315 8 1

Қадам 8. Қайта шақыру функцияларын қосыңыз

Міне, сіз бұрын жасаған прототиптерді қайта шақыру функциялары. Әр жолы негізгі цикл арқылы бұл функциялар шақырылады. Дисплей функциясы алдыңғы қоңырау кезінен бастап айнымалыларға жасалған кез келген өзгерістер негізінде көріністі қайта жасайды. SpecialKeys функциясы бізге бағдарламамен әрекеттесуге мүмкіндік береді.

    // Қайта шақыру функциялары glutDisplayFunc (дисплей); glutSpecialFunc (арнайы пернелер);

1994315 9 1
1994315 9 1

Қадам 9. MainLoop іске қосыңыз

Бұл анимация мен қолданушының өзара әрекеттесуіне мүмкіндік беретін бағдарламаны жапқанша негізгі функцияны еске түсіреді.

    // glutMainLoop () оқиғалары үшін басқаруды GLUT -қа жіберіңіз; // ОЖ -ге қайту 0; }

3/2 бөлігі: Дисплей () функциясы

1994315 10 1
1994315 10 1

Қадам 1. Бұл функцияның мақсатын түсіну

Текшені салу бойынша барлық жұмыстар осы функцияда орындалады. Сіздің текшедегі жалпы идея - барлық алты жағын жеке -жеке сызып, оларды тиісті орынға қою.

Тұжырымдамалық түрде әр жақ төрт бұрышты анықтап, OpenGL -ге сызықтарды қосуға және оны сіз анықтайтын түспен толтыруға мүмкіндік береді. Мұны істеу үшін төмендегі қадамдар берілген

1994315 11 1
1994315 11 1

Қадам 2. glClear () қосыңыз

Бұл функцияны орындау үшін сізге қажет бірінші қадам түсін және Z буферін тазалаңыз. Бұл қадамдар болмаса, ескі сызбалар әлі де жаңа сызбалардың астында көрінуі мүмкін, ал сызылған объектілер экранда дұрыс орналаспайды.

    void display () {// Экранды тазарту және Z-буферлік glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

1994315 12 1
1994315 12 1

Қадам 3. glBegin () және glEnd () қосыңыз

OpenGL объектілерді әр түрлі көпбұрыштардың комбинациясы ретінде анықтайды. Көмегімен glBegin () команда берсеңіз, сіз пішінді салатын қарындашты тиімді түрде қоясыз. Қарындашты көтеріп, жаңа пішінді бастау үшін, оны пайдалану керек glEnd () команда Бұл оқулықта сіз текшенің әр жағын салу үшін GL_POLYGON қолданасыз, бірақ басқа пішіндерді жасау үшін GL_LINE, GL_QUAD немесе GL_TRIANGLE сияқты басқа параметрлерді қолдануға болады.

  • Мұнда сіз текшенің алдыңғы бөлігінен бастайсыз. Кейін сіз барлық 6 жағына түс қосасыз.
  • // Көп түсті жақ - FRONT glBegin (GL_POLYGON); // Келесі қадамда шыңдар қосылады glEnd ();

1994315 13 1
1994315 13 1

Қадам 4. glVertex3f () қосыңыз

Сіз полигонды бастағыңыз келетінін айтқаннан кейін сізге қажет шыңдарды анықтаңыз объектінің. glVertex сіздің нысаныңызбен не істегіңіз келетініне байланысты бірнеше пішінге ие.

  • Біріншісі - сіз қанша өлшемде жұмыс істеп жатқаныңыз. Жоғарыдағы glVertex3f 3 нұсқасы сіз 3 өлшемде сурет салғаныңызды айтады. Сонымен қатар 2 немесе 4 өлшемде жұмыс істеуге болады. GlVertex3f ішіндегі жоғарыдағы f өзгермелі сандармен жұмыс жасайтыныңызды айтады. Сіз сондай -ақ шорттарды, бүтін сандарды немесе дубльдерді пайдалана аласыз.
  • Назар аударыңыз, бұл тармақтар a сағат тіліне қарсы мәнер. Қазіргі уақытта бұл өте маңызды емес, бірақ сіз жарықпен, текстурамен және қиғаштықпен жұмыс жасай бастағанда, бұл өте маңызды болады, сондықтан дәл қазір ұпайыңызды сағат тіліне қарсы анықтауға дағдыланыңыз.
  • GlBegin () және glEnd () жолдарының арасына шыңдарды қосыңыз.
  • // Көп түсті жақ - 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

Қадам 5. glColor3f () қосыңыз

glColor glVertex сияқты жұмыс істейді. Сіз нүктелерді қысқа, бүтін сандар, қосарланған немесе өзгермелі ретінде анықтай аласыз. Әр түстің 0 -ден 1 -ге дейінгі мәні бар. Барлық 0 -лер нүктені қара етеді, ал барлық 1 -лер нүктені ақ етеді. GlColor3f () ішіндегі 3 альфа арнасы жоқ RGB түс жүйесін білдіреді. Түстің альфасы оның мөлдірлігін анықтайды. Альфа деңгейін өзгерту үшін glColor4f () пайдаланыңыз, соңғы параметрі мөлдір емес мөлдірлік үшін 0 -ден 1 -ге дейін.

  • Сіз glColor3f () қоңырау шалған кезде, сол нүктеден сызылған әрбір төбе сол түсті болады. Сондықтан, егер сіз барлық төрт шыңның қызыл болуын қаласаңыз, glVertex3f () пәрмендерінің алдында түстерді бір рет орнатыңыз және барлық шыңдар қызыл болады.
  • Төменде анықталған алдыңғы жағы әр төбеге жаңа түсті қалай анықтау керектігін көрсетеді. Бұл әрекетті орындау кезінде сіз OpenGL түстерінің қызықты қасиетін көре аласыз. Көпбұрыштың әр төбесінің өзіндік түсі болғандықтан, OpenGL түстерді автоматты түрде араластырады! Келесі қадамда бір түсті төрт шыңды қалай тағайындау керектігі көрсетіледі.
  • // Көп түсті жақ - FRONT glBegin (GL_POLYGON); glColor3f (1.0, 0.0, 0.0); glVertex3f (0,5, -0,5, -0,5); // P1 - қызыл glColor3f (0.0, 1.0, 0.0); glVertex3f (0,5, 0,5, -0,5); // P2 - жасыл glColor3f (0.0, 0.0, 1.0); glVertex3f (-0.5, 0.5, -0.5); // P3 - көк glColor3f (1.0, 0.0, 1.0); glVertex3f (-0.5, -0.5, -0.5); // P4 - күлгін glEnd ();

1994315 15 1
1994315 15 1

Қадам 6. Басқа жақтарды өңдеңіз

Әр шыңның текшенің басқа бес жағында орналасуы қандай болатынын анықтаңыз, бірақ қарапайымдылық үшін олар сіз үшін есептелген және есепте көрсетілген. соңғы көрсету () функциясы төменде

    // Ақ жағы - BACK 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 (); // Күлгін жағы - 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 (); // Жасыл жағы - 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 (); // Көк жағы - 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 (); // Қызыл жағы - 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 (); }

  • Біз сондай -ақ осы функция үшін кодтың соңғы екі жолын қосқымыз келеді. Бұлар glFlush ();

    және glutSwapBuffers ();

    бізге бұрын білген қос буферлік әсер береді.

3 -тің 3 -бөлігі: Пайдаланушылардың интерактивтілігі

1994315 16 1
1994315 16 1

Қадам 1. specialKeys () қосыңыз

Сіз дерлік аяқтадыңыз, бірақ дәл қазір текшені сызуға болады, бірақ оны айналдыруға болмайды. Мұны істеу үшін сіз жасайсыз specialKeys () жасау көрсеткі пернелерін басып, текшені айналдыруға мүмкіндік беретін функция!

  • Бұл функция rotate_x және rotate_y жаһандық айнымалыларды жариялаудың себебі. Оң және сол жақ көрсеткі пернелерін басқанда, rotate_y 5 градусқа артады немесе азаяды. Сол сияқты жоғары және төмен көрсеткі пернелерін басқанда, rotate_x сәйкесінше өзгереді.
  • void specialKeys (int key, int x, int y) {// Оң жақ көрсеткі - айналуды 5 градусқа жоғарылату, егер (key == GLUT_KEY_RIGHT) rotate_y += 5; // Сол жақ көрсеткі - айналуды 5 градусқа төмендетіңіз, егер (key == GLUT_KEY_LEFT) rotate_y - = 5; әйтпесе (key == GLUT_KEY_UP) rotate_x += 5; әйтпесе (key == GLUT_KEY_DOWN) rotate_x -= 5; // glutPostRedisplay () көрсетуді жаңартуды сұрау; }

1994315 17 1
1994315 17 1

Қадам 2. glRotate () қосыңыз

Сіздің соңғы мәлімдемеңіз - сіздің объектіңізді айналдыратын мәлімдемені қосу. Display () функциясына оралыңыз және ФРОНТ жағына дейін мына жолдарды қосыңыз:

    // glLoadIdentity түрлендірулерді қалпына келтіру (); // Пайдаланушы rotate_x және rotate_y glRotatef (rotate_x, 1.0, 0.0, 0.0) өзгерткенде бұру; glRotatef (rotate_y, 0.0, 1.0, 0.0); // Түрлі түсті жағы - ФРОНТ….

  • Алдымен синтаксис екенін ескеріңіз glRotatef () glColor3f () және glVertex3f () ұқсас, бірақ әрқашан 4 параметрді қажет етеді. Бірінші параметр - қолданылатын айналу дәрежесі. Келесі үш параметр қай осьтің айналу керектігін анықтайды, біріншісі - x осі, екіншісі - y осі, үшіншісі - z осі. Дәл қазір сізге тек x және y осі бойынша айналу керек.
  • Бағдарламада жазатын барлық түрлендірулер осыған ұқсас жолдарды қажет етеді. Тұжырымдамалық түрде сіз мұны объектіңізді x осі бойынша rotate_x анықталған мөлшерге айналдыру деп ойлай аласыз, содан кейін y осінің айналасында rotate_y арқылы айналасыз. Алайда OpenGL бұл мәлімдемелердің барлығын бір матрицалық түрлендіруге біріктіреді. Дисплей функциясын шақырған сайын сіз түрлендіру матрицасын құрасыз және glLoadIdentity () әр өту кезінде жаңа матрицадан бастайтындығыңызға сендіреді.
  • Сіз қолдануға болатын басқа трансформация функциялары - glTranslatef () және glScalef (). Бұл функциялар glRotatef () функциясына ұқсас, тек 3 параметрді алады, объектіні аудару немесе масштабтау үшін x, y және z сомалары.
  • Барлық үш түрлендіруді бір объектіге қолдану кезінде дұрыс әсер алу үшін оларды дұрыс ретпен қолдану қажет. Әрқашан оларды ретімен жазыңыз glTranslate, glRotate, содан кейін glScale. OpenGL трансформацияларды негізінен төменнен жоғары қарай қолданады. Мұны түсіну үшін OpenGL оларды жоғарыдан төменге қарай қолданса және OpenGL оларды төменнен жоғары қарай қолданса, қарапайым 1x1x1 текшесі түрлендірулерде қалай болатынын елестетіп көріңіз.
1994315 18 1
1994315 18 1

3-қадам. Текшені х осі бойынша 2-ге, у-осі бойынша 2-ге масштабтау, текшені у осі бойынша 180 градусқа бұру және х осі бойынша 0,1-ге аудару үшін келесі пәрмендерді қосыңыз

Бұларды және алдыңғы glRotate () пәрмендерін жоғарыда сипатталғандай дұрыс ретпен орналастырғаныңызға көз жеткізіңіз. (Егер сіз сенімді болмасаңыз, бұл оқулықтың соңындағы соңғы кодта орындалады.)

    // Басқа түрлендірулер 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

Қадам 4. Кодыңызды құрастырыңыз және іске қосыңыз

Сіз gcc -ті компилятор ретінде қолданасыз деп ойласаңыз, бағдарламаңызды құрастыру және тексеру үшін терминалдан осы командаларды орындаңыз.

    Linux жүйесінде: gcc cube.c -o текше -lglut -lGL./ mycube Mac жүйесінде: gcc -o foo foo.c -ramework GLUT -framework OpenGL./ mycube Windows жүйесінде: gcc -Wall -ofoo foo.c -lglut32cu - lglu32 -lopengl32./ mycube

1994315 20 1
1994315 20 1

Қадам 5. Толық кодты тексеріңіз

Ол келесідей болуы керек:

    // // Файл: mycube.c // Автор: Мэтт Дейсли // Жасалған: 25.04.2012 // Жоба: OpenGL -де текше жасаудың бастапқы коды // Сипаттама: OpenGL терезесін жасайды және 3D текшесін салады/ / Пайдаланушы көрсеткі пернелерінің көмегімен айналуы мүмкін // // Басқару элементтері: Сол жақ көрсеткі -Солға бұру // Оңға көрсеткі -Оңға бұру // Жоғары көрсеткі -Жоғарыға айналдыру // Төменге бағыттау -Төменге айналдыру // ------ -------------------------------------------------- -// қамтиды // ------------------------------------------- --------------- #қосу #қосу #қосу #анықтау GL_GLEXT_PROTOTYPES #ifdef _APPLE_ #қосу #басқа #қосу #endif // ------------- -------------------------------------------- // Функцияның прототиптері / / ------------------------------------------------- --------- жарамсыз дисплей (); жарамсыз specialKeys (); // ------------------------------------------------ ---------- // Жаһандық айнымалылар // ---------------------------------- ------------------------ қос бұру_y = 0; қос айналдыру_x = 0; // ------------------------------------------------ ---------- // display () Қайта шақыру функциясы // ------------------------------- --------------------------- void display () {// Экранды тазарту және Z-буфері glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // glLoadIdentity түрлендірулерді қалпына келтіру (); // Басқа түрлендірулер // glTranslatef (0.1, 0.0, 0.0); // кірмейді // glRotatef (180, 0.0, 1.0, 0.0); // Қосылмайды // Пайдаланушы rotate_x және rotate_y glRotatef (rotate_x, 1.0, 0.0, 0.0) өзгерткенде бұру; glRotatef (rotate_y, 0.0, 1.0, 0.0); // Басқа түрлендірулер // glScalef (2.0, 2.0, 0.0); // Қосылмайды // Түрлі -түсті жағы - FRONT glBegin (GL_POLYGON); glColor3f (1.0, 0.0, 0.0); glVertex3f (0,5, -0,5, -0,5); // P1 - қызыл glColor3f (0.0, 1.0, 0.0); glVertex3f (0,5, 0,5, -0,5); // P2 - жасыл glColor3f (0.0, 0.0, 1.0); glVertex3f (-0.5, 0.5, -0.5); // P3 - көк glColor3f (1.0, 0.0, 1.0); glVertex3f (-0.5, -0.5, -0.5); // P4 - күлгін glEnd (); // Ақ жағы - BACK 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 (); // Күлгін жағы - 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 (); // Жасыл жағы - 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 (); // Көк жағы - 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 (); // Қызыл жағы - 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 () кері шақыру функциясы // ------------------------------ ---------------------------- void specialKeys (int key, int x, int y) {// Оң жақ көрсеткі-айналуды 5-ке көбейту дәреже, егер (кілт == GLUT_KEY_RIGHT) rotate_y += 5; // Сол жақ көрсеткі - айналуды 5 градусқа төмендетіңіз, егер (key == GLUT_KEY_LEFT) rotate_y - = 5; әйтпесе (key == GLUT_KEY_UP) rotate_x += 5; әйтпесе (key == GLUT_KEY_DOWN) rotate_x -= 5; // glutPostRedisplay () көрсетуді жаңартуды сұрау; } // ----------------------------------------------- ----------- // main () функциясы // ------------------------------- --------------------------- int main (int argc, char* argv ) {// GLUT инициализациялаңыз және glutInit пайдаланушы параметрлерін өңдеңіз (& argc, argv); // Z буферлік glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH) бар екі буферлі шын түс терезесін сұрау; // Терезені құру glutCreateWindow («Керемет текше»); // Z-буферлік тереңдік сынағын қосу glEnable (GL_DEPTH_TEST); // Қайта шақыру функциялары glutDisplayFunc (дисплей); glutSpecialFunc (арнайы пернелер); // glutMainLoop () оқиғалары үшін басқаруды GLUT -қа жіберіңіз; // ОЖ -ге қайту 0; }

Ұсынылған: