OpenGL几何图元与缓冲区
来源:互联网 发布:mysql 当前时间减30秒 编辑:程序博客网 时间:2024/04/28 05:58
OpenGL几何图元与缓冲区
顶点:glVertex,有三种形式(x, y, 1),(x, y, z),(x, y, z, w)。设置点的大小glPointsize,获得受支持的点的大小范围与增量大小。
GLfloat sizes[2];GLfloat step;glGetFloatv(GL_POINT_SIZE_RANGE, size);glGetFloatv(GL_POINT_SIZE_GRANULARITY, &step);
直线
glBegin(GL_LINES); glVertex3f(x0, y0, z0); glVertex3f(x1, y1, z1);glEnd();glBegin(GL_LINE_STRIP); glVertex3f(x0, y0, z0); ...glEnd();glBegin(GL_LINR_LOOP); ...glEnd();//设置直线宽度void glLineWidth(GLfloat width);//获得所支持的直线的宽度范围与增量GLfloat widthRange[2];GLfloat step;glGetFloatv(GL_LINE_WIDTH_RANGE, widthRange);glGetFloatv(GL_LINE_WIDTH_GRANULARITY, &step);//点画直线glEnable(GL_LINE_STIPPLE);void glLineStipple(GLint factor, GLushort pattern);
三角形
glBegin(GL_TRIANGLES); ...glEnd();glBegin(GL_TRIANGLE_STRIP); ...glEnd();glBegin(GL_TRIANGLE_FAN); ...glEnd();//单调着色,用当前颜色(多边形最后一个顶点的颜色)填充这个多边形glShadeModel(GL_FLAT);//渐变着色,根据每个顶点对三角形进行渐变着色,对相邻顶点的颜色进行均和glShadeModel(GL_SMOOTH);//启动深度测试glEnable(GL_DEPTH_TEST);//禁用深度测试glDisable(GL_DEPTH_TEST);//清除颜色缓冲与深度缓冲区glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
顶点的指定次序以及方向的组合称为环绕,可以通过环绕方向确定多边形所显示的是正面还是反面。在默认情况下,OpenGL认为逆时针方向环绕的一面是多边形的正面。可以使用函数glFrontFace(GL_CW)设置顺时针环绕方向的多边形表示的是正面,glFrontFace(GL_CCW)可以恢复到默认状态。
glPolygonMode设置多边形作为实心图形、外框、或者点进行渲染。
四边形
glBegin(GL_QUADS); ......glEnd();glBegin(GL_QUDA_STRIP); .....glEnd();
多边形
glBegin(GL_POLYGON); ....glEnd();
使用多边形创建一个复杂的表面时,需要记住两个重要的规则。第一个规则是所有的多边形都必须是平面的(每个多边形的所有顶点都必须位于同一个平面中);第二个规则是多边形的边必须不相交,并且多边形必须是凸的。
OpenGL并不是直接在屏幕上渲染图元的,而是在一个缓冲区中完成渲染,然后在把渲染结果交换到屏幕上,这两个缓冲区称为前颜色缓冲区(屏幕)和后颜色缓冲区。在默认情况下,OpenGL命令是在后缓冲区进行渲染的,并且调用glutSwapBuffers(或者操作系统特定的缓冲区交换函数)函数时,前后缓冲区就会进行交换,从而看到渲染效果。指定缓冲区进行渲染,如:glDrawBuffer(GL_FRONT)、glDrawBuffer(GL_BACK)。深度缓冲区请求GLUT_DEPTH,glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH)。
glEnable(GL_SCISSOR_TEST),glScissor指定裁剪框进行渲染,让渲染只在这个区域进行。
请求模板缓冲区glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_STENCIL),打开模板操作glEnable(GL_STENCIL_TEST),打开了模板测试后,绘图只能在那些通过了模板测试的位置进行,模板测试函数void glStencilTest(GLenum func, GLint ref, GLuint mask);
参考资料
1. OpenGL SuperBible
- OpenGL几何图元与缓冲区
- OpenGL几何图元和缓冲区(一)
- OpenGL几何图元和缓冲区(二)
- OpenGL几何图元和缓冲区(三)
- OpenGL几何图元和缓冲区(四)
- OpenGL几何图元和缓冲区(五)
- OpenGL几何图元和缓冲区(六)
- OpenGL开发 空间绘图:几何图元和缓冲区
- OpenGL绘图的基本过程是:清除缓冲区,设置当前颜色,绘制几何图元,输出图形。
- opengl 函数库--绘制几何图元
- OpenGL笔记之绘制几何图元(geometric primitives)
- OPENGL学习笔记整理(四):几何图元渲染
- OpenGL小探2--几何图元,3D初步
- 基本几何图元
- opengl使用现在比较常用的方法来绘制简单几何图元
- openGl超级宝典学习笔记 (2) 7个基本的几何图元
- OpenGL基本图元
- OpenGL图元
- 股票买卖(算法)
- 【RMAN】备份的那些概念
- IOS学习随笔——TK-0721
- 棋盘覆盖问题
- DoTween 五:< 常用方法 —— 渐变动画的再次调用or仅可执行一次>
- OpenGL几何图元与缓冲区
- 软件实习笔记一(Qt安装与简单使用)
- 《当幸福来敲门》经典台词
- 创建完整窗口
- android中跨进程通讯的4种方式
- 并查集(转)--看一遍就懂,感谢大神的分享
- 说话人识别
- Android蓝牙控制arduino机器人自走小车
- jQuery源码学习 之 end与addBack