OpenGL

advertisement
OpenGL
Лекция 4 (10.10.2013)
Массивы вершин
 void glVertexPointer( GLint size, GLenum type,
GLsizei stride, void *ptr )
 size определяет число координат вершины (2, 3, 4)
 type определяет тип данных (GL_SHORT, GL_INT,
GL_FLOAT, GL_DOUBLE)
 stride задает смещение от координат одной
вершины до координат следующей (если 0, то
координаты расположены последовательно
 ptr - адрес, где находятся данные
Массивы нормалей и цветов
 void glNormalPointer(GLenum type, GLsizei stride,
void*pointer)
 void glColorPointer(GLintsize, GLenum type, GLsizei
stride, void *pointer)
 void glTexCoordPointer(GLintsize, GLenum type,
GLsizei stride, void *pointer)
Начало работы с массивами
 void glEnableClientState(GLenum array)
 array = GL_VERTEX_ARRAY, GL_NORMAL_ARRAY,
GL_COLOR_ARRAY, GL_TEXTURE_COORD_ARRAY
 Для окончания работы с массивами
 void glDisableClientState(GLenum array)
Рисование одной вершины
 void glArrayElement(GLint index)
 Это аналогично последовательному применению
команд glColor..(…), glNormal..(…), glVertex..(…) c
соответствующими параметрами
Рисование нескольких вершин
 void glDrawArrays(GLenum mode, GLint first, GLsizei
count)
 Рисует count примитивов, определяемых
параметром mode, используя элементы из
массивов с индексами от first до first+count-1. Это
эквивалентно вызову команды glArrayElement() с
соответствующими индексами
Рисование нескольких вершин
 void glDrawElements(GLenum mode, GLsizei count,
GLenum type, void *indices)
 indices– это массив номеров вершин, которые надо
использовать для построения примитивов, type
определяет тип элементов этого массива:
GL_UNSIGNED_BYTE, GL_UNSIGNED_SHORT,
GL_UNSIGNED_INT, а count задает их количество
Списки изображений





void glNewList(GLuint list, GLenum mode)
void glEndList()
list – номер списка (натуральное число)
mode:
GL_COMPILE команды записываются в список без
выполнения
 GL_COMPILE_AND_EXECUTE команды сначала
выполняются, а затем записываются в список
Вызов списков
 void glCallList(GLuint list)
 void glCallLists(GLsizei n, GLenum type, const GLvoid
*lists)
 Вызывает n списков с идентификаторами из
массива lists, тип элементов которого указывается
в параметре type (GL_BYTE, GL_UNSIGNED_BYTE,
GL_SHORT, GL_INT, GL_UNSIGNED_INT)
Удаление списков
 void glDeleteLists(GLint list, GLsizei range)
 Удаляет списки с идентификаторами ID из
диапазона list <=ID<= list+range-1
2D графика
2D графика
gluOrtho2D
 glMatrixMode(GL_PROJECTION);
 glLoadIdentity();
 The gluOrtho2D function defines a 2-D orthographic projection
matrix.
void gluOrtho2D(
GLdouble left,
GLdouble right,
GLdouble bottom,
GLdouble top
);
glVertex2f
 glMatrixMode(GL_MODELVIEW);
 glLoadIdentity();









glEnable(GL_TEXTURE_2D);
glBindTexture( GL_TEXTURE_2D, textures[0]);
glBegin(GL_QUADS);
glTexCoord2f(0, 0); glVertex2f(0, 0);
glTexCoord2f(1, 0); glVertex2f(100, 0);
glTexCoord2f(1, 1); glVertex2f(100, 100);
glTexCoord2f(0, 1); glVertex2f(0, 100);
glEnd();
glDisable(GL_TEXTURE_2D);
Вывод текста
 glColor3f(1,0,0);
 hWnd = FindWindowW(NULL, L"Моя вторая проженька
на OpenGL");
 hDC=GetDC(hWnd);
 BuildFont();
 glRasterPos2f(x, y);
 glPrint("Hello World! GetTickCount: %d", GetTickCount());
 KillFont();
Download