Програмиране в OpenGl(freeglut), рисуване на примитиви
Поздрави читателю! Днес в първата си статия ще говоря за програмиране наOpenGl.
//Забележка: Можете също да използвате glut вместо freeglut (алтернатива с отворен код на glut).
Като начало ще напиша малко за това какво трябва да изтеглите и инсталирате, за да започнете да кодирате наopengl(freeglut'e).
За да рисуваме върху opengl, ще използваме библиотекатаfreeglut(OpenGL Utility Toolkit - обвивка за opengl, така да се каже). Файловете freeglut могат да бъдат намерени тук. Има също инструкции как да го инсталирате на linux и windows (MSVC и MinGW). В linux freeglut се инсталира с няколко команди, а в windows с няколко кликвания. Ако имате проблеми с инсталацията, можете да ми пишете, ще опиша по-подробно как се инсталираfreeglut.
Повече подробности под кройката.
И така в началото, нека се запознаем с първоначалната инициализация на кода. Обикновено всеки проект на freeglut съдържа следния код:
Нека анализираме някои от горните функции по-подробно: F-yaglutInitDisplayMode()може да приема различни параметри, но засега ще използваме само някои от тях:
GLUT_RGB- Използване на RGB режим (червенозеленосин - червенозеленсин - съответно). Използва се по подразбиране.GLUT_SINGLEе прозорец с единичен буфер. Този режим също се използва по подразбиране.GLUT_DOUBLEе двойно буфериран прозорец.
Буферъте област, в която данните се съхраняват временно.
Възниква въпросът каква е разликата между единичен буфер и двоен буфер? Двойният буфер работи по следния начин: има два буфера, докато първият буфер се чертае на екрана, вторият буфер се подготвя и изчертава, след като първият буфер е напълно изчертан. След това абсолютно същото, само че буферите се разменят.Тези. буферите се чертаят един по един. Защо е необходимо това? За да избегнете трептене на екрана. Мисля, че от написаното по-горе можете да разберете какво означава единичен буфер.
ФункцияglOrtho(left, right, bottom, top, zNear, zFar) — задава координатната система параметърът left означава колко единици се преместваме наляво по оста oX параметърът right означава колко единици се преместваме надясно по оста oX параметър bottom означава колко единици се преместваме надолу по оста oY параметър top означава колко единици се преместваме нагоре по оста oY параметър zNear означава с колко единици ще се преместим по-дълбоко по оста oZ zFar параметър означава с колко единици ще се преместим напред по оста oZ За по-лесно разбиране премахнах снимката:
openglпримитивно програмиране: Нека да се заемем с кодирането. Малък код, който тегли линията:
Във функциятаglBegin()задаваме това, което искаме да започне да рисува, може да приема параметри като:
GL_POINTS- казва на програмата, че ще начертаем точкаGL_LINES- ще начертаем линияGL_TRIANGLES- ще начертаем триъгълникGL_QUADS- ще начертаем правоъгълник ... и други параметри, с които можете да комбинирате линии, да рисувате групи от триъгълници, четириъгълници и многоъгълници s. F-yaglEnd()завършва рисуването на обекта(ите)
Сега нека използвамеglBegin(GL_POINTS),glBegin(GL_LINES),glBegin(GL_TRIANGLES),glBegin(GL_QUADS), за да начертаем точка, линия, триъгълник и правоъгълник.