Технології програмування КС. Лекція 2 (частина 2) презентация

Структура простої OpenGL-програми (на базі консольного-проекту бібліотека glut) Заголовкові файли, оголошення функцій та змінних #include #include #include #include // файли glut32.lib

Слайд 1Технології програмування КС лекція 2 (частина 2)
Проф. Цимбал О.М., кафедра ТАВР, ХНУРЕ,

Харків, Україна

Слайд 2 Структура простої OpenGL-програми (на базі консольного-проекту бібліотека glut)

Заголовкові файли, оголошення

функцій
та змінних

#include
#include
#include
#include

// файли glut32.lib та glut32.dll – в теці проекту

void display(void);
void resize(int,int);

2. Функцій main() програми
void main()
{ glutInitWindowPosition(50, 10);
glutInitWindowSize(400, 400);
glutInitDisplayMode( GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE );
glutCreateWindow( "GLUT Template" );
glutIdleFunc(display);
glutDisplayFunc(display);
glutReshapeFunc(resize);
/* Enter your cod here */
glutMainLoop();
}

3. Функції resize() та display()

void resize(int width,int height)
{ glViewport(0,0,width,height);
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
glOrtho(-5,5, -5,5, 2,12);
gluLookAt( 0,0,5, 0,0,0, 0,1,0 );
glMatrixMode(GL_MODELVIEW);
}

void display(void)
{ glClearColor(1.0,1.0,1.0,1.0);
glClear(GL_COLOR_BUFFER_BIT|
GL_DEPTH_BUFFER_BIT);
glTranslated(0.0005,0,0);
glRotated(45.0,1.0,0.0,0.0);
glColor3d(1,0,0);
glutWireSphere(1, 15,15);
glutSwapBuffers();
}


Слайд 3 Синтаксис команд та основні типи OpenGL


Функції та процедури OpenGL, зазвичай, називають

командами
Усі команди OpenGL мають префікс gl, а кожна назва функції починається з великої літери, наприклад glColor(), glPushMatrix().
Узагальнений вигляд команди OpenGL:
 
rtype CommandName [1 2 3 4] [b s i f d us ui] [v] (atype arg)
 де:
CommandName – ім’я OpenGL-команди,
наприклад glVertex;
[1 2 3 4] – кількість аргументів;
[b s i f d us ui] – тип аргументів;
[v] – вектор, rtype – тип що повертається.
atype та arg - типом та кількість аргументів.
Варіанти запису команди glVertex:
glVertex2d, glVertex2f, glVertex3d, glVertex3i,
glVertex4s, glVertex2dv, glVertex2fv….
Константи OpenGL записують великими літерами,
наприклад GL_COLOR_BUFFER_BIT.

Слайд 4Команди відображення графічних примітивів OpenGL

вершини графічних об’єктів OpenGL визначаються командою glVertex*():
 
void

glVertex [2 3 4] [s i f d] v (type coord); // приклад – glVertex2i(0, -4);

glVertex*() визначається чотирма координатами: x, y, z та w.
glVertex2() задає x, y, z =0, w=1. glVertex3() задає x, y, z, w=1,
glVertex4() усі 4 координати. w враховує перспективу.

Примітив OpenGL – простий графічний об’єкт (точка, лінія, багатокутник, растрове зображення), яким можна маніпулювати як єдиною дискретною сутністю.

Поточний колір об’єкта разом з умовами освітлення визначає сумарний колір, який поширюється на всі пізніше створювані примітиви – до встановлення нового.

Команди кольору:
void glColor [3 4] [b s i f d][v] (GLtype components); // встановлення RGBA-кольору
void glIndex [3 4] [s i f d] v (GLtype index); // індексний режим кольору
 
glColor3f (0.0, 0.0, 0.0); // black glColor3f (1.0, 0.0, 0.0); // red glColor3f (0.0, 1.0, 0.0); // green
Альфа-параметр визначає ступінь прозорості: 0.0 – відсутня, 1.0 – повна.

Слайд 5Команди відображення графічних примітивів OpenGL

За допомогою наборів вершин задаються примітиви або

групи примітивів: точки, лінії, з’єднані лінії, замкнені лінії, трикутники різного типу, позв’язані та непозв’язані чотирикутники, полігони.
Формування набору точок забезпечується комбінацією команд glBegin() / glEnd():

void glBegin (GLenum mode); // початок послідовності
void glEnd ( ); // кінець послідовності

Всередині комбінації команд glBegin() / glEnd() окрім вершин встановлюються: колір, вектор нормалі, координати текстур, властивості матеріалу, виклик списків. Використання інших команд не допускається.
Стандартно точка відображується як окремий піксель, лінія - ширину 1 піксель. Нестандартні значення задаються функціями glPointSize() та glLineWidth():
 
void glPointSize (GLfloat size); // size – ширина точки у пікселях
void glLineWidth (GLfloat width); // width – ширина лінії у пікселях


Слайд 6Команди відображення графічних примітивів OpenGL

І


Слайд 7Команди відображення графічних примітивів OpenGL

Приклад з незалежними лініями:

glLineWidth(5.0);
glBegin(GL_LINES);
glColor3f(0.0,0.0,1.0);
glVertex3f(5.0f,0.0f,0.0f); glVertex3f(0.0f,5.0f,0.0f);
glColor3f(1.0,1.0,0.0);
glVertex3f(0.0f,0.0f,0.0f); glVertex3f(5.0f,5.0f,0.0f);
glEnd();
Приклад

з пов’язаними лініями:

glLineWidth(10.0);
glBegin(GL_LINE_STRIP);
glColor3f(1.0,0.0,1.0);
glVertex2i(0,5); glVertex2i(5,5);
glVertex2i(5,0); glVertex2i(10,0);
glEnd();

Слайд 8Команди відображення графічних примітивів OpenGL


Приклад із замкненою лінією:

glLineWidth(15.0);
glBegin(GL_LINE_LOOP);
glColor3f(0.0,1.0,0.0);
for(int i=0;i

незалежними трикутниками:

glBegin(GL_TRIANGLES);
glColor3f(0.0,1.0,0.0);
glVertex2f(0.2,0.0); glVertex2f(5.0,0.0); glVertex2f(2.5,5.0); // 1
glColor3f(0.0,1.0,1.0);
glVertex2f(-0.2,0.0); glVertex2f(-5.0,0.0); glVertex2f(-2.5,-5.0); // 2
glEnd();

Слайд 9Команди відображення графічних примітивів OpenGL

Приклад із пов’язаними трикутниками:

glBegin(GL_TRIANGLE_STRIP);
glColor3f(1.0,0.5,0.0);
glVertex2f(0.0,0.0); glVertex2f(-2.5,-5.0);
glColor3f(1.0,0.0,1.0);
glVertex2f(-5.0,0.0);

glVertex2f(-7.5,-5.0);
glColor3f(0.0,1.0,0.0);
glVertex2f(-10.0,0.0);
glEnd();

Приклад із веєром трикутників:

glBegin(GL_TRIANGLE_FAN);
glColor3f(0.5,0.5,0.0);
glVertex2i(0,0);
glVertex2i(-2,3); glVertex2i(2,3);
glColor3f(0.0,0.0,1.0);
glVertex2i(4,0);
glColor3f(1.0,1.0,0.0);
glVertex2i(2,-3);
glEnd();


Слайд 10Команди відображення графічних примітивів OpenGL

Приклад із незалежними чотирикутниками:

glBegin(GL_QUADS);
glColor3f(1.0,0.0,0.0);
glVertex2i(0,0); glVertex2i(0,4); glVertex2i(4,4);

glVertex2i(4,0);
glColor3f(0.0,1.0,0.0);
glVertex3i(0,0,0); glVertex3i(0,4,0); glVertex3i(0,4,4); glVertex3i(0,0,4);
glEnd();

Приклад із пов’язаними чотирикутниками:

glBegin(GL_QUAD_STRIP);
glColor3f(1.0,0.0,0.0);
glVertex2i(0,0); glVertex2i(-2,0); glVertex2i(0,2); glVertex2i(-2,4);
glColor3f(0.0,1.0,0.0);
glVertex2i(3,2); glVertex2i(3,4);
glEnd();


Слайд 11Команди відображення графічних примітивів OpenGL

Приклад із полігоном (правильний шостикутник):

glBegin(GL_POLYGON);
glColor3f(0.0,0.5,1.0);
for(int i=0;i


Приклад із полігоном (увігнутий):

glBegin(GL_POLYGON);
glColor3f(0.0,0.5,1.0); //
glVertex2i(0,0); glVertex2i(3,-3);
glVertex2i(-3,-3); glVertex2i(-5,0); // glVertex(5,0);
glVertex2i(-3,3); glVertex2i(3,3);
glEnd();


Слайд 12Команди відображення графічних примітивів OpenGL



// приклад із полярною системою координат
glColor3f(1.0,1.0,0.0); // жовтий

колір
glLineWidth(5.0); // ширина лінії – 5.0
glBegin(GL_LINE_LOOP); // відрізки кола
for(int i=0;i<100;i++)
{double angle=2*pi*i/100;
glVertex2f(5.0*cos(angle),5.0*sin(angle));
}
glEnd();



// приклад із незалежними точками
glPointSize(20.0);
glBegin(GL_POINTS);
glColor3f(1.0,0.0,0.0); glVertex3i(0,3,0);
glColor3f(1.0,1.0,0.0); glVertex3i(0,0,3);
glColor3f(0.0,0.0,1.0); glVertex3i(3,0,0);
glEnd();


Обратная связь

Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое ThePresentation.ru?

Это сайт презентаций, докладов, проектов, шаблонов в формате PowerPoint. Мы помогаем школьникам, студентам, учителям, преподавателям хранить и обмениваться учебными материалами с другими пользователями.


Для правообладателей

Яндекс.Метрика