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();