给大家介绍Qt中常用的关于OpenGL的几个函数
1 glClearColor():
void glClearColor(GLclampf red,GLclampf green,Glclampf blue,GLclampf alpha);功能是:为颜色缓存区指定确定的值
并不起到和它名字一样得 clear的作用。
2 glClearDepthf():
glClearDepthf — 指定深度缓冲区的清除值
glClearDepth, 它给深度缓冲指定了一个初始值,缓冲中的每个像素的深度值都是这个, 比如1,这个时候你往里面画一个物体, 由于物体的每个像素的深度值都小于等于1, 所以整个物体都被显示了出来。 如果初始值指定为0, 物体的每个像素的深度值都大于等于0, 所以整个物体都不可见。 如果初始值指定为0.5, 那么物体就只有深度小于0.5的那部分才是可见的
3 glDepthFunc(func)指定用于深度缓冲比较值;
func值
含义
GL_NEVER
不通过(输入的深度值不取代参考值)
GL_LESS
如果输入的深度值小于参考值,则通过
GL_EQUAL
如果输入的深度值等于参考值,则通过
GL_LEQUAL
如果输入的深度值小于或等于参考值,则通过
GL_GREATER
如果输入的深度值大于参考值,则通过
GL_NOTE_QUAL
如果输入的深度值不等于参考值,则通过
GL_GEQUAL
如果输入的深度值大于或等于参考值,则通过
GL_ALWAYS
总是通过(输入的深度值取代参考值)
4:glEnable- 启用或禁用服务器端GL功能
这个下面有很多功能
GL_BLEND
如果启用,则将计算的片段颜色值与颜色缓冲区中的值混合。
GL_CULL_FACE
如果启用,则根据窗口的坐标来剔除多边形。 请参阅glCullFace。
GL_DEPTH_TEST
如果启用,进行深度比较并更新深度缓冲区。 注意,即使存在深度缓冲区且深度掩码不为零,如果禁用深度测试,也将不会更新深度缓冲区。 请参阅glDepthFunc和glDepthRangef。
GL_DITHER
如果启用,则在将颜色组件或索引写入颜色缓冲区之前对其进行抖动。
GL_POLYGON_OFFSET_FILL
如果启用,则会将偏移添加到由光栅化生成的多边形片段的深度值。 请参阅glPolygonOffset。(常用于处理Z-fighting)
GL_SAMPLE_ALPHA_TO_COVERAGE
如果启用,则计算临时覆盖值,其中每个位由相应样本位置的alpha值确定。 然后,临时覆盖值与片段覆盖值进行AND运算。
还有一些功能,暂时不做介绍有兴趣可以去翻翻相关的文档。
5:glClear()
使用掩码的按位异或运算来表示要清除的缓冲区。 三个掩码是GL_COLOR_BUFFER_BIT,GL_DEPTH_BUFFER_BIT和GL_STENCIL_BUFFER_BIT。
6:glGenBuffers- 生成缓冲区对象名称
void glGenBuffers(GLsizei n,GLuint * buffers);
n
指定要生成的缓冲区对象名称的数量。
buffers
指定存储生成的缓冲区对象名称的数组。
glBindBuffer
void glBindBuffer(GLenum target,GLuint buffer);
target
指定缓冲区对象绑定的目标。 符号常量必须为GL_ARRAY_BUFFER或GL_ELEMENT_ARRAY_BUFFER。
buffer
指定缓冲区对象的名称(ID)。
glBufferData- 创建并初始化缓冲区对象的数据存储
void glBufferData(GLenum target,GLsizeiptr size,const GLvoid * data,GLenum usage);
glDrawArrays
从当前绑定的缓冲区中读取数据按照基本图元的形式绘制几何图形。void glDrawArrays( GLenum mode,
GLint first) 通过后没的first来决定画的图形