Література
Основними графічними операціями OpenGL є:
створення форм з графічних примітивів, і таким чином, створення математичних описів об’єктів (примітивами є лінії, багатокутники, зображення);
упорядкування об’єктів у тривимірному просторі та вибір бажаної точки розташування камери для перегляду скомпонованої сцени;
обчислення кольорів усіх об’єктів, де кольори у явний вигляд задаються програмою, визначаються, виходячи з умов освітлення, отримуються шляхом накладання текстур або комбінацією трьох зазначених дій;
перетворення математичного опису об’єктів та пов’язаної з ними інформації щодо кольору об’єктів у пікселі на екрані (процес, що називають растеризацією).
Використання контекстів візуалізації забезпечується такими WinAPI-функціями:
HGLRC wglCreateContext(HDC hdc ); // створення контексту візуалізаціїBOOL wglDeleteContext(HGLRC hglrc ); // вилучення контексту візуалізації BOOL wglMakeCurrent(HDC hdc, HGLRC hglrc ); // активізація контексту візуалізації
У наведених функціях hdc – дескриптор контексту GDI, hglrc – дескриптор контексту візуалізації OpenGL.
3. Обробник повідомлення WM_SIZE (*.cpp файл)
void CMainWin::OnSize(unsigned int type, int x, int y)
{CClientDC dc(this);
wglMakeCurrent(dc.m_hDC,m_hrc);
GLdouble gldAspect=(GLdouble)x/(GLdouble)y;
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(30.0,gldAspect,1.0,10.0);
glViewport(0,0,x,y);
wglMakeCurrent(NULL,NULL);
}
Обробник повідомлення WM_PAINT (*.cpp файл) void
CMainWin::OnPaint(void)
{CPaintDC pDC(this);
wglMakeCurrent(pDC.m_hDC,m_hrc);
GLInit();
OnOpenGL();
SwapBuffers(pDC.m_hDC);
wglMakeCurrent(NULL,NULL);
}
Обробники повідомлень WM_HSCROLL та WM_VSCROLL
(див. Лекція 6, семестр 1).
9. Бібліотеки OpenGL , що необхідно додати в проект: Для Windows 10:
C:\Program Files (x86)\Windows Kits\8.0\Lib\win8\um\x86
glu32.lib, OpenGL32.lib.
glaux.lib (може не входити до MSVS)
Функція resize()
void CALLBACK 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 );
}
Функція display()
void CALLBACK display(void)
{ glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glColor3d(1,0,0);
if(lr)glRotatef(angle,1,0,0);
if(ud)glRotatef(angle,0,1,0);
auxWireTeapot(2.5);
auxSwapBuffers();
}
Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:
Email: Нажмите что бы посмотреть