OpenGL Изграждане на Геометрични гл. ас. д-р А. Пенев
Изчистване на Изображението (1/3) void glclear(glbitfield mask) mask: GL_COLOR_BUFFER_BIT GL_DEPTH_BUFFER_BIT GL_ACCUM_BUFFER_BIT GL_STENCIL_BUFFER_BIT на Цвета на Дълбочината на Натрупване на Маската 2/43
Изчистване на Изображението (2/3 /3) void glclearcolor(glclampf red, GLclampf green, GLclampf blue, GLclampf alpha) Пример: glclearcolor(0,0,0,0); glclear(gl_color_buffer_bit GL_DEPTH_BUFFER_BIT); 3/43
Изчистване на Изображението (3/3 /3) Повече в лекцията за Работа с Буфери... 4/43
glflush и glfinish void glflush(void) void glfinish(void) void glutswapbuffers(void void) 5/43
glflush glclearcolor(0,0,0,0); glclear(gl_color_buffer_bit); glflush(); изпраща командите Клиент Сървър 6/43
glfinish glclearcolor(0,0,0,0); glclear(gl_color_buffer_bit); glfinish(); изпраща командите Клиен т чака да се изпълнят Сървъ р 7/43
glutswapbuffers glclearcolor(0,0,0,0); glclear(gl_color_buffer_bit); glutswapbuffers(); //извършва и Flush Буфер2 Буфер1(Back) (Front) Рисуваме в Виждаме Буфер2 Буфер1(Front) (Back) 8/43
glvertex Основна команда за дефиниране на геометрията на сцената void glvertex...(x, y, z, w) 9/43
Рисуване void glbegin(glenum mode) void glend(void) Пример: glcolor3d(1,0,0); glbegin(gl_triangles); glvertex2d(-1.0, -1.0); glvertex2d(1.0, -1.0); glvertex2d(0.0, 1.0); glend(); 10/43
Пример 1 11/43
glbegin режими GL_POINTS GL_LINES GL_LINE_STRIP GL_LINE_LOOP GL_TRIANGLES GL_TRIANGLE_STRIP GL_TRIANGLE_FAN GL_QUADS GL_QUAD_STRIP GL_POLYGON Точки Отсечки Начупена линия Затворена начупена линия Триъгълници Ивица от триъгълници Ветрило от триъгълници Четириъгълници Ивица от четириъгълници Многоъгълник 12/43
GL_POINTS V0 V3 V4 V1 V2 13/43
GL_LINES V0 V3 V4 V1 V2 V5 Забележка: Точките не се визуализират 14/43
GL_LINE_STRIP V0 V3 V4 V1 V2 V5 Забележка: Точките не се визуализират 15/43
GL_LINE_LOOP V0 V3 V4 V1 V2 V5 Забележка: Точките не се визуализират 16/43
GL_TRIANGLES V0 V4 V5 V3 V1 V2 Забележка: Точките и линиите не се визуализират 17/43
GL_TRIANGLE_STRIP V0 V2 V4 V6 V1 V3 V5 V7 Забележка: Точките и линиите не се визуализират 18/43
GL_TRIANGLE_FAN V0 V5 V4 V1 V2 V3 Забележка: Точките и линиите не се визуализират 19/43
GL_QUADS V0 V3 V4 V7 V1 V2 V5 V6 Забележка: Точките и линиите не се визуализират 20/43
GL_QUAD_STRIP V0 V2 V4 V6 V1 V3 V5 V7 Забележка: Точките и линиите не се визуализират 21/43
GL_POLYGON V0 V4 V3 V1 V2 Забележка: Точките и линиите не се визуализират 22/43
Характеристики на Връх glbegin(gl_triangles); glcolor3d(1,0,0); glvertex2d(-1.0, -1.0); glcolor3d(0,1,0); glvertex2d(1.0, -1.0); glcolor3d(0,0,1); glvertex2d(0.0, 1.0); glend(); 23/43
Пример 2 24/43
Характеристики на връх void glcolor...(red, green, blue, a) void glindex...(color_index olor_index) void glnormal3...(nx, ny, nz)... и много други, които няма да разглеждаме сега. 25/43
Точки void glpointsize(glfloat size) glgetfloatv(gl_point_size, &s); glgetfloatv GetFloatv(GL_POINT_SIZE_RANGE, &s); glenable Enable(GL_POINT_SMOOTH); gldisable Disable(GL_POINT_SMOOTH); 26/43
Пример 3 (1/2) glpointsize(5); glbegin(gl_points); glcolor3d(1,0,0); glvertex2d(-1.0, -1.0); glcolor3d(0,1,0); glvertex2d(1.0, -1.0); glcolor3d(0,0,1); glvertex2d(0.0, 1.0); glend(); 27/43
Пример 3 (2/2 /2) 28/43
Линии void gllinewidth(glfloat width) void gllinestipple(glint factor, GLushort pattern) glgetfloatv(gl_line LINE_WIDTH,, &w);& glgetfloatv GetFloatv(GL_LINE_WIDTH_RANGE, &w); glenable Enable(GL_ (GL_LINE_STIPPLE); glenable Enable(GL_LINE_SMOOTH); gldisable Disable(GL_LINE_SMOOTH); 29/43
Пример 4 (1/2) glshademodel(gl_flat); gllinewidth(5); glbegin(gl_line_strip); glcolor3d(1,0,0); glvertex2d(-1.0, -1.0); glcolor3d(0,1,0); glvertex2d(1.0, -1.0); glcolor3d(0,0,1); glvertex2d(0.0, 1.0); glcolor3d(1,1,1); glvertex2d(1.5, 1.5); glend(); 30/43
Пример 4 (2/2 /2) glshademodel(gl_smooth) glshademodel(gl_flat) 31/43
Пример 5 (1/2) glenable(gl_line_stipple); gllinestipple(1, 0xFF00); gllinewidth(5); glbegin(gl_line_strip); glcolor3d(1,0,0); glvertex2d(-1.0, -1.0); glcolor3d(0,1,0); glvertex2d(1.0, -1.0); glcolor3d(0,0,1); glvertex2d(0.0, 1.0); glcolor3d(1,1,1); glvertex2d(1.5, 1.5); glend(); 32/43
Пример 5 (2/2 /2) 33/43
Многоъгълници void glpolygonmode(glenum face, GLenum mode) face: GL_FRONT GL_BACK GL_FRONT_AND_BACK mode: GL_POINT GL_LINE GL_FILL само за предна страна само за задна страна и за двете страни само върхове само ребра запълнен 34/43
Пример 6 (1/2) glpointsize(5); gllinewidth(5); glpolygonmode(gl_front_and_back, GL_POINT); //glpolygonmode(gl_front_and_back, GL_LINE); //glpolygonmode(gl_front_and_back, GL_FILL); glbegin(gl_triangles); glcolor3d(1,0,0); glvertex2d(-1.0, -1.0); glcolor3d(0,1,0); glvertex2d(1.0, -1.0); glcolor3d(0,0,1); glvertex2d(0.0, 1.0); glend(); 35/43
Пример 6 (2/2 /2) 36/43
Щриховка на многоъгълници void glpolygonstipple(const GLubyte *mask) void glgetpolygonstipple(glubyte *mask) void glpolygonoffset(glfloat factor, GLfloat units) 37/43
Предна страна на многоъгълник void glfrontface(glenum mode) mode: GL_CCW GL_CW обратно на часовата по часовата лице при GL_CCW гръб 38/43
Бракуване на многоъгълници glenable(gl_cull_face); void glcullface(glenum mode) GL_CCW mode: GL_FRONT GL_BACK GL_FRONT_AND_BACK лице гръб при GL_BACK задните стени не се растеризират 39/43
Пример 7 (1/2) glpolygonmode(gl_front, GL_FILL); glpolygonmode(gl_back, GL_LINE); glenable(gl_cull_face); glfrontface(gl_ccw); // GL_CW glcullface(gl_front); //GL_BACK glcolor3d(1,0,0); glutsolidsphere(1, 32, 32); 40/43
Пример 7 (2/2) glcullface(gl_back) glcullface(gl_front) 41/43
Скриване на ребра void gledgeflag...(glboolean flag) GL_TRUE GL_FALSE реброто се показва реброто не се показва 42/43
OpenGL Изграждане на Геометрични Въпроси? 43/43