130 likes | 367 Views
Компьютерная визуализация. Лекция № 3. СПбГУ ИТМО 200 4. GL_ BACK. GL_FRONT. glutSwapBuffers();. Двойная буферизация. glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE ); // включение режима двойной буферизации. void glDrawBuffer(GLenum mode); // выбор активного буфера.
E N D
Компьютерная визуализация Лекция №3 СПбГУ ИТМО2004
GL_BACK • GL_FRONT glutSwapBuffers(); Двойная буферизация glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE );// включение режима двойной буферизации void glDrawBuffer(GLenum mode); // выбор активного буфера
Получение параметров визуализации void glGetBooleanv(GLenum pname,GLboolean * params); void glGetDoublev(GLenum pname, GLdouble * params); void glGetFloatv(GLenum pname, GLfloat * params); void glGetIntegerv(GLenum pname, GLint * params); // получают значения параметра заданного константой pname GLint viewport[4]; glGetIntegerv(GL_VIEWPORT, viewport); // получаетпараметры порта вывода GLdouble modelMatrix[16]; glGetDoublev(GL_MODELVIEW_MATRIX , modelMatrix); // получаеттекущую видовую матрицу GLdouble projMatrix[16]; glGetDoublev(GL_PROJECTION_MATRIX, projMatrix); // получаеттекущую матрицу проекций
Выполнение проекционных преобразований int gluProject(GLdouble objx, GLdouble objy, GLdouble objz, const GLdouble modelMatrix[16], const GLdouble projMatrix[16], const GLint viewport[4], GLdouble * winx, GLdouble * winy, GLdouble * winz); // выполнение прямого преобразования int gluUnProject(GLdouble winx, GLdouble winy, GLdouble winz, const GLdouble modelMatrix[16], const GLdouble projMatrix[16], const GLint viewport[4], GLdouble * objx, GLdouble * objy, GLdouble * objz); // выполнение обратного преобразования // (objx, objy, objz) – видоваякоордината; // (winx, winy, winz) – координата окна; // modelMatrix – видовая матрица; // projMatrix – матрица проекций; // viewport – параметры порта вывода
glBitmap(8,7,7,3,0,0,h_mark); glBitmap(7,8,3,7,0,0,v_mark); Отображение битовых примитивов void glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte * bitmap); // отобразить битовый массив bitmap; // width, height – размеры битового изображения; // xorig, yorig – положение центра битового изображения; // xmove, ymove – смещениетекущей позиции вывода растра после отображения;
Управление отображением битовых примитивов void glRasterPos2d(GLdouble x, GLdouble y); void glRasterPos3d(GLdouble x, GLdouble y, GLdouble z); // установка позиции вывода растра void glPixelStorei(GLenum pname, GLint param); void glPixelStoref(GLenum pname, GLfloat param); // определение режима распаковки битового массива // pname = GL_UNPACK_ALIGNMENT // param = 1 – для GLubyte = 2 – для GLushort = 4 – для GLuint (по умолчанию) = 8 – для GLfloat glPushAttrib(GL_CURRENT_BIT);// запомнить состояние параметров в стеке атрибутов glPopAttrib(); // восстановить состояние параметров из стека
Отображение текстовых символов void glutBitmapCharacter(void *font, int character); // создание растрового шрифта // font – константа определяющая тип шрифта GLUT_BITMAP_8_BY_13 GLUT_BITMAP_9_BY_15 GLUT_BITMAP_TIMES_ROMAN_10 GLUT_BITMAP_TIMES_ROMAN_24 GLUT_BITMAP_HELVETICA_10 GLUT_BITMAP_HELVETICA_12 GLUT_BITMAP_HELVETICA_18 // character – код символа void glutStrokeCharacter(void *font, int character); // создание векторного шрифта // font – константа определяющая тип шрифта GLUT_STROKE_ROMAN GLUT_STROKE_MONO_ROMAN // character – код символа
Отображение растровых примитивов • void glDrawPixels(GLsizei width,GLsizei height, • GLenum format, GLenum type, const GLvoid *pixels); • // отображение растрового примитива pixels • // width, heigth – размеры отображаемого растра • // format – параметр отображения • GL_COLOR_INDEX, • GL_RGB, GL_RGBA • GL_RED, GL_GREEN, GL_BLUE, • GL_LUMINANCE • // type – тип данных в массиве pixels • GL_UNSIGNED_BYTE, GL_BYTE, • GL_UNSIGNED_SHORT, GL_SHORT, • GL_UNSIGNED_INT, GL_INT, • GL_BITMAP, GL_FLOAT
Преобразование диапазона значений void glPixelStoref(GLenum pname, GLfloat param); // определение режима преобразования диапазона значений // GL_RED_SCALE, GL_GREEN_SCALE, GL_BLUE_SCALE // GL_RED_BIAS, GL_GREEN_BIAS, GL_BLUE_BIAS N = X * SCALE + BIAS
Цветовые преобразования glPixelTransferi(GL_MAP_COLOR, true); // включение режима цветовых преобразований glPixelTransferi(GL_MAP_COLOR, false); // выключение режима цветовых преобразований void glPixelMapfv(GLenum map, GLint mapsize, const GLfloat *values); // определение карты цветовых преобразований // map – тип карты GL_PIXEL_MAP_I_TO_R GL_PIXEL_MAP_I_TO_G GL_PIXEL_MAP_I_TO_B // mapsize – количество элементов в карте // values – массив новых значений цвета
Отображение части растрового примитива glPixelStorei(GL_UNPACK_ROW_LENGTH, width); // установка количества элементов в строке glPixelStorei(GL_UNPACK_SKIP_ROWS, rows); // установка количества пропускаемых строк glPixelStorei(GL_UNPACK_SKIP_PIXELS, pixels); // установка количества пропускаемых пикселов