• 【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提供的数学组如下图所示。

      

  • 相关阅读:
    LoliProfile Native内存分析工具
    谈谈法线贴图
    逐顶点光照与逐像素光照
    标准光照模型
    UE4之TaskGraph系统
    Centos 安装.NET CORE 3.1
    ImportError: No module named 通用解决方法
    [公告] 本博客停止更新,新文献将发布于掘金
    jdk8的常用的功能
    etcd 与 redis使用场景
  • 原文地址:https://www.cnblogs.com/liustdelphi/p/2933387.html
Copyright © 2020-2023  润新知