【OpenGL编程指南】之状态管理

   OpenGL是一个状态机,很多状态一旦设定除非修改,否则将一直有效。这些状态如何被设置和管理呢?

清除窗口

  函数glClearColor用于设置当前清除颜色,它由4个参数,分别指定red、green、blue和alpha的值,范围限定在[0,1]之内。

  函数glClear用当前清除值清除制定的缓冲区,常用缓冲区和名称如下图。

  

基本状态管理

  OpenGL维护了许多状态和状态变量,其中大部分默认是“否”的状态,激活这些状态可能有很大的开销。为了打开或关闭状态,可以使用glEnableglDisable函数。

  通过glIsEnable、glGetBooleanv、glGetIntegerv等函数可以查询许多状态的当前值。

属性组

  OpenGL将相关状态进行归组,称为属性组。比如,GL_LINE_BIT包含了5个状态变量:直线的宽度,GL_LINE_STIPPLE启用状态、直线点画模式、直线点画重复计数器和GL_LINE_SMOOTH启用状态。

  OpenGL大约有20个不同的属性组,他们都可以用glPushAttribglPopAttrib进行保存和恢复。其中前者的形式为:void glPushAttrib(GLbitfield mask),mask为后缀是_BIT的掩码位,OpenGL提供的数学组如下图所示。

  

原文地址:https://www.cnblogs.com/liustdelphi/p/2933387.html