openGL API 之glDrawBuffer(GL_NONE);

2023-11-04

openGL系列文章目录

前言

openGL API 之glDrawBuffer(GL_NONE);详解

在这里插入图片描述

一、glDrawBuffer官网

glDrawBuffer官网说明

Name
glDrawBuffer, glNamedFramebufferDrawBuffer — specify which color buffers are to be drawn into

C Specification
void glDrawBuffer( GLenum buf);

void glNamedFramebufferDrawBuffer( GLuint framebuffer,
GLenum buf);

Parameters
framebuffer
Specifies the name of the framebuffer object for glNamedFramebufferDrawBuffer function. Must be zero or the name of a framebuffer object.

buf
For default framebuffer, the argument specifies up to four color buffers to be drawn into. Symbolic constants GL_NONE, GL_FRONT_LEFT, GL_FRONT_RIGHT, GL_BACK_LEFT, GL_BACK_RIGHT, GL_FRONT, GL_BACK, GL_LEFT, GL_RIGHT, and GL_FRONT_AND_BACK are accepted. The initial value is GL_FRONT for single-buffered contexts, and GL_BACK for double-buffered contexts. For framebuffer objects, GL_COLOR_ATTACHMENT m m m and GL_NONE enums are accepted, where m m m is a value between 0 and GL_MAX_COLOR_ATTACHMENTS.

Description
When colors are written to the frame buffer, they are written into the color buffers specified by glDrawBuffer. One of the following values can be used for default framebuffer:

GL_NONE
No color buffers are written.

GL_FRONT_LEFT
Only the front left color buffer is written.

GL_FRONT_RIGHT
Only the front right color buffer is written.

GL_BACK_LEFT
Only the back left color buffer is written.

GL_BACK_RIGHT
Only the back right color buffer is written.

GL_FRONT
Only the front left and front right color buffers are written. If there is no front right color buffer, only the front left color buffer is written.

GL_BACK
Only the back left and back right color buffers are written. If there is no back right color buffer, only the back left color buffer is written.

GL_LEFT
Only the front left and back left color buffers are written. If there is no back left color buffer, only the front left color buffer is written.

GL_RIGHT
Only the front right and back right color buffers are written. If there is no back right color buffer, only the front right color buffer is written.

GL_FRONT_AND_BACK
All the front and back color buffers (front left, front right, back left, back right) are written. If there are no back color buffers, only the front left and front right color buffers are written. If there are no right color buffers, only the front left and back left color buffers are written. If there are no right or back color buffers, only the front left color buffer is written.

If more than one color buffer is selected for drawing, then blending or logical operations are computed and applied independently for each color buffer and can produce different results in each buffer.

Monoscopic contexts include only left buffers, and stereoscopic contexts include both left and right buffers. Likewise, single-buffered contexts include only front buffers, and double-buffered contexts include both front and back buffers. The context is selected at GL initialization.

For framebuffer objects, GL_COLOR_ATTACHMENT m m m and GL_NONE enums are accepted, where m m m is a value between 0 and GL_MAX_COLOR_ATTACHMENTS. glDrawBuffer will set the draw buffer for fragment colors other than zero to GL_NONE.

Errors
GL_INVALID_OPERATION error is generated by glNamedFramebufferDrawBuffer if framebuffer is not zero or the name of an existing framebuffer object.

GL_INVALID_ENUM is generated if buf is not an accepted value.

GL_INVALID_OPERATION is generated if the default framebuffer is affected and none of the buffers indicated by buf exists.

GL_INVALID_OPERATION is generated if a framebuffer object is affected and buf is not equal to GL_NONE or GL_COLOR_ATTACHMENT m m m, where m m m is a value between 0 and GL_MAX_COLOR_ATTACHMENTS.

Associated Gets
glGet with argument GL_DRAW_BUFFER

Version Support
OpenGL Version
Function / Feature Name 2.0 2.1 3.0 3.1 3.2 3.3 4.0 4.1 4.2 4.3 4.4 4.5
glDrawBuffer ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔
glNamedFramebufferDrawBuffer - - - - - - - - - - - ✔
See Also
glBlendFunc, glColorMask, glDrawBuffers, glLogicOp, glReadBuffer

Copyright
Copyright © 1991-2006 Silicon Graphics, Inc. Copyright © 2010-2014 Khronos Group. This document is licensed under the SGI Free Software B License. For details, see https://khronos.org/registry/OpenGL-Refpages/LICENSES/LicenseRef-FreeB.txt.

二、翻译

glDrawBuffer 函数
项目
2021/09/14
2 contributors

GlDrawBuffer 函数指定要绘制到的颜色缓冲区。

语法
C++

复制
void glDrawBuffer(
GLenum mode
);
参数
mode

指定最多四个颜色缓冲区,其中包含以下可接受的符号常数。

表 1
值 含义
GL _ 无
不写入任何颜色缓冲区。
总帐 _ 前面 _ 左侧
仅写入前左颜色缓冲区。
总帐 _ 前 _ 右
仅编写右颜色缓冲区。
GL _ 向 _ 左
仅写入反左颜色缓冲区。
GL _ 向 _ 右
仅写入右手颜色缓冲区。
总帐 _ 前期
仅写入左、前右颜色缓冲区。 如果没有右颜色缓冲区,则只写入前左颜色缓冲区。
GL _ 回
仅写入左右和右颜色缓冲区。 如果没有右右颜色缓冲区,则只写入反左的颜色缓冲区。
总帐 _ 剩余
仅写入左和后左颜色缓冲区。 如果没有左的颜色缓冲区,则只写入前左颜色缓冲区。
总帐 _ 权限
仅写入上右和右右颜色缓冲区。 如果没有右右颜色缓冲区,则只写入上右的颜色缓冲区。
总帐 _ 前后 _ _
所有前面和背面的颜色缓冲区 (都将写入左、上、右、左、右) 。 如果没有背面的颜色缓冲区,则只写入前左和前右颜色缓冲区。 如果没有正确的颜色缓冲区,则只会写入左右左颜色缓冲区。 如果没有右侧或背面的颜色缓冲区,则只写入前左颜色缓冲区。
总帐 _ AUXi
仅写入辅助 *颜色缓冲区;*i 在0和总帐 _ AUX _ 缓冲器-1 之间。 (总帐 _ 辅助 _ 缓冲区不是上限; 请使用 glGet 查询可用辅助缓冲区的数目。 )
_对于单缓冲上下文,默认值为 gl 前部, _ 对于双缓冲上下文,默认值为 gl。

返回值
此函数不返回值。

错误代码
GlGetError函数可以检索以下错误代码。

错误代码
名称 含义
总帐 _ 无效 _ 枚举
模式 不是接受的值。
总帐 _ 无效 _ 操作
模式 不存在指示的任何缓冲区。
总帐 _ 无效 _ 操作
调用 glBegin 和对 glEnd的相应调用之间调用了函数。
备注
将颜色写入帧缓冲区时,会将这些颜色写入 glDrawBuffer 指定的颜色缓冲区。

如果为绘图选择了多个颜色缓冲区,则会为每个颜色缓冲区单独计算和应用混合或逻辑操作,并可以在每个缓冲区中产生不同的结果。

Monoscopic 上下文仅包括左侧缓冲区,stereoscopic 上下文包括左缓冲区和右缓冲区。 同样,单缓冲上下文只包含前台缓冲区,而双缓冲的上下文包括前端和后台缓冲区。 在 OpenGL 初始化时选择上下文。

通常情况下,GL _ 辅助 i = gl _ AUX0 + i。

以下函数检索与 glDrawBuffer 函数相关的信息:

glGet 参数总帐 _ 绘制 _ 缓冲区

带参数的 glGet _ 辅助 _ 缓冲区

要求
要求
要求 值
最低受支持的客户端
Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器
Windows 2000 Server [仅限桌面应用]
标头
Gl。h

Opengl32
DLL
Opengl32.dll
请参阅
glBegin

glBlendFunc

glColorMask

glEnd

glGet

glIndexMask

glLogicOp

glReadBuffer

GL_FRONT: 单缓存的默认值
GL_FRONT_RIGHT:
GL_NONE:不写入颜色缓冲区,如果存在片段着色器则不启用该着色器
GL_FRONT_LEFT:
GL_FRONT_AND_BACK:
GL_RIGHT:
GL_AUXi: i表示第几个辅助缓存.
GL_LEFT:
GL_BACK_RIGHT:
GL_BACK: 双缓存的默认值
GL_BA
对于帧缓冲区对象而言,可以取GL_COLOR_ATTACHMENT m m m and GL_NONE,m为0~GL_MAX_COLOR_ATTACHMENTS
注意: 启用多个缓存用于写操作时, 只要其中一个缓存存在, 就不会发生错误. 如果指定的缓存都不存在, 就发生错误.CK_LEFT:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

openGL API 之glDrawBuffer(GL_NONE); 的相关文章

  • 如何安装适用于 Windows C++ 的最新版本 OpenGL?

    我正在使用 Visual Studio 2010 运行 Windows 7 包含的 OpenGL 版本 include 是版本 1 1 我希望使用合理的当前版本 某种版本 3 或 4 我需要做什么才能达到该状态 OpenGL SDK 页面位
  • OpenGL 着色器不与着色器程序链接

    我正在尝试使用 GLFW GLEW 添加着色器 我收到一个错误 指出着色器已加载 但它们没有有效的对象代码 这是我用于加载着色器的代码 class SHADER public void LoadShaders const char vert
  • 为什么 OpenGL 给对象提供句柄而不是指针?

    OpenGL 的传统是让用户使用 unsigned int 句柄来操作 OpenGL 对象 为什么不直接给出一个指针呢 与指针相比 唯一 ID 有何优点 TL DR OpenGL ID 不会双射映射到内存位置 单个 OpenGL ID 可能
  • SDL 鼠标位置调整大小后裁剪

    我在 SDL 中的鼠标位置上遇到了一些奇怪的行为 如果我将窗口大小调整得更大 则任一鼠标事件的 x y 位置似乎都限制为原始窗口的宽度和高度 如果我缺少一些函数调用来告诉 SDL 鼠标区域的大小已增加 应用程序的相关部分 void Resi
  • 将带有 glut 的点击坐标添加到向量链接列表中

    我想创建一个向量链接列表 并在 GLUT 库的帮助下获取点击的位置并将它们附加到链接列表中 这些是我写的结构 typedef struct vector int x int y Vector typedef struct VectorLis
  • GLSL NVidia 方形神器

    当 GLSL 着色器在以下 GPU 上生成不正确的图像时 我遇到了问题 GT 430 GT 770 GTX 570显卡760 但在这些上正常工作 英特尔高清显卡 2500英特尔高清4000英特尔4400显卡740MRadeon HD 631
  • OpenGL缓冲区更新[重复]

    这个问题在这里已经有答案了 目前我正在编写一个模拟水的程序 以下是我所做的步骤 创建水面 平面 创建VAO 创建顶点缓冲区对象 在其中存储法线和顶点 将指针绑定到此 VBO 创建索引缓冲区对象 然后我使用 glDrawElements 渲染
  • Opengl 像素完美 2D 绘图

    我正在研究 2d 引擎 它已经工作得很好 但我不断收到像素错误 例如 我的窗口是 960x540 像素 我从 0 0 到 959 0 画一条线 我希望扫描线 0 上的每个像素都会被设置为一种颜色 但事实并非如此 最右边的像素没有被绘制 当我
  • OpenGL:仅获取模板缓冲区而没有深度缓冲区?

    我想获取一个模板缓冲区 但如果可能的话 不要承受附加深度缓冲区的开销 因为我不会使用它 我发现的大多数资源表明 虽然模板缓冲区是可选的 例如 排除它以利于获得更高的深度缓冲区精度 但我还没有看到任何请求并成功获取仅 8 位模板缓冲区的代码
  • 使用 GLSL 直接在着色器中从位置计算平移矩阵

    我正在开发 C OpengL 程序以及 GLSL 顶点和片段着色器 我正在创建同一对象的多个实例 我只需要改变实例之间的对象位置 这是我所做的 我正在使用一个统一变量 它是一个变换矩阵数组 每个矩阵代表一个对象实例 MVP 也是一个变换矩阵
  • 如何使用边缘和内部镶嵌因子完成三角形面片镶嵌?

    I am just learning tessellation and i came across with below example for triangle patch tessellation but i am not sure h
  • 使用 pyclutter 进行编程

    我是混乱 和 pyclutter 的新手 我一直在尝试使用 pyclutter 到目前为止我还没有找到任何好的教程 我的意思是没有真正正确解释的内容 我看到了几个示例程序 但是当我尝试使用 pyclutter 时 我没有得到任何好的结果 这
  • glDrawElements 只绘制半个四边形

    这是我的功能 void Object draw2 if mIsInitialised return Tell OpenGL about our vertex and normal data glEnableClientState GL VE
  • 不明确的 OpenGL 默认相机位置

    在我的Opengl程序中 在我应用透视投影矩阵之前 每当我绘制一些对象时 我都会在世界坐标系的原点处绘制它 但是几乎所有Opengl教程都指出相机 我的投影视图 位于原点朝向正 z 轴 这取决于您稍后如何处理投影矩阵中的 z 值 但是如果这
  • 重新创建窗口而不破坏上下文

    这个问题是关于使用 OpenGL 的图形应用程序 当时我正在使用 GLFW 框架 但我考虑更改它 我的目标是让用户 尽可能 在全屏模式和窗口模式之间不断切换 此过程应该花费不到一秒的时间 并且可以在运行时发生 例如 看看游戏 我的世界 用户
  • 在 Ubuntu 中与未编译的着色器链接

    我需要加载 glsl 来绘制一些东西 我的环境是Ubuntu 13 04 因此它不存在GLuint InitShader GLuint GLuint 这是我的对象创建 预链接步骤和链接的配置 不幸的是 它仍然出现错误 该错误与未编译的着色器
  • 为什么 glClear 不清除我的屏幕?

    这是我编写的一个简单的 opengl 程序 我试图在绘制三角形之前清除屏幕 我在 init 函数中调用了 glClear 但是 它似乎无法清除屏幕 include
  • 如何使用现代 OpenGL 在透视投影中绘制对象的正交轴? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我有带有透视投影的 3D 场景 我还可以选择场景中的一个对象 我需要为选定的对象绘制轴 问题是轴不会在透视投影中保存其大小 如果物体远离眼睛
  • LibGDX纹理混合与OpenGL混合功能

    在 libGdx 中 我试图创建一个成形纹理 采用完全可见的矩形纹理并将其遮罩以获得成形纹理 如下所示 在这里我在矩形上测试它 但我想在任何形状上使用它 我调查过本教程 http www learnopengles com tag addi
  • Windows下使用GLEW使用OpenGL扩展

    我一直在 Windows 上使用 OpenGL 扩展痛苦的方式 https stackoverflow com questions 14413 using opengl extensions on windows GLEW 是更简单的方法吗

随机推荐

  • 一文讲解图像插值算法原理!附Python实现

    Datawhale学习 作者 姚童 Datawhale优秀学习者 寄语 本文梳理了最近邻插值法 双线性插值法和三次样条插值法的原理 并以图像缩放为例 对原理进行了C 及Python实现 在图像处理中 几何变换是将一幅图像映射到另外一幅图像内
  • WebLogic 反序列化漏洞(CVE-2019-2890)

    一 漏洞介绍 2019年10月15日 Oracle官方发布了2019年10月安全更新公告 其中包含了一个可造成RCE远程任意代码执行的高危漏洞 漏洞编号为CVE 2019 2890 Weblogic在利用T3协议进行远程资源加载调用时 默认
  • python shutil模块(其中详细介绍shutil.copytree )

    shutil 是 Python 标准库中的一个模块 提供了许多文件和文件夹操作的函数 它可以用于复制 移动 重命名和删除文件 以及创建 复制和删除文件夹等操作 你可以使用import shutil导入该模块 并使用其中的函数来执行相关操作
  • linux 查看文件 可翻页,Linux如何读取文件,如何翻页

    linux读取文件的命令还是比较多的 例如 cat more less head tail cat命令操作 cat 命令用于连接文件并打印到标准输出设备上 语法格式 cat AbeEnstTuv help version fileName
  • JAVA必背面试题和项目面试通关要点(带答案)

    一 数据库 1 常问数据库查询 修改 SQL查询包含筛选查询 聚合查询和链接查询和优化问题 手写SQL语句 例如四个球队比赛 用SQL显示所有比赛组合 举例2 选择重复项 然后去掉重复项 数据库里的密码如何加密 md5 1 数据库的密码加密
  • VJ 4 F - ABC087C AtCoder - 3881(dp)

    Problem Statement We have a 2 N grid We will denote the square at the i th row and j th column 1 i 2 1 j N as i j You ar
  • Idea快捷键(Windows系统)

    Idea快捷键 1 生成get set toString 构造方法 重写父类方法等 快捷键 Alt Insert 在进行set方法时 可以选择链式编程 2 复制一份当前代码 快捷键 Ctrl D 3 自动补全变量名 快捷键 Alt Ente
  • RData的保存与加载

    最好的存储R中数据的格式是保存为 RData RData 也称为 rda文件 是R专属的文件 可以保存海量文件 rds Rds files store a single R object 和 Rdata 也称为 rda 文件 可以用于以R原
  • 经典排序算法总结

    简介 java系列技术分享 持续更新中 初衷 一起学习 一起进步 坚持不懈 如果文章内容有误与您的想法不一致 欢迎大家在评论区指正 希望这篇文章对你有所帮助 欢迎点赞 收藏 留言 更多文章请点击 文章目录 一 冒泡排序 1 1 排序原理 1
  • C语言数组介绍(详解)

    数组目录 数组概念 一维数组 维数组的创建和初始化 一维数组的基本创建 一维数组的初始化 数组的类型 一维数组的使用 数组下标 数组元素的打印 数组的输入 一维数组内存中的储存 如何用sizefo计算数组元素个数 二维数组 二维数字的概念
  • 如何用安装启动盘启动计算机,用u盘启动电脑进入系统安装 如何进入启动u盘安装系统...

    U盘是现在安装系统最常用到的工具 而且大部分的电脑都支持U盘启动 通过启动热键或BIOS设置都可以进入U盘启动 下面介绍一下如何进入启动u盘安装系统 用u盘启动电脑进入系统安装步骤阅读 1 将U盘插在电脑的USB接口 开机并不断按下启动U盘
  • 神经网络参数优化总结

    神经网络参数优化总结1 一般而言 对神经 网络的调节包括 学习速率 Momentum 动量梯度下降法 的参数beta Adam优化算法的参数 beta1 beta2 神经网络层数 不同层中隐藏单元数量 学习率衰减等 1 对于学习率 1 gi
  • 【Cocos Creator 3D快捷方式】Cocos Creator 3D场景基本操作与快捷方式

    3D场景记住以下操作就可以了 a 双击节点 让节点来到我们视野中央 要看哪个物体 我们只要双击这个节点 b 拉远拉近 鼠标滚轮滚动 拉远 拉近操作 c 按住alt 鼠标左键按下 拖动 360度来查看我们的节点模型 d 鼠标右键 wsad 这
  • unity Editor下批量设置材质球中的贴图部分:

    批量设置材质球中Main Maps部分贴图包含 Albedo Metallic Nomap Occlusion 脚本存放位置 放在在Editor目录之下 点击 window 之下的AddMaterialBall 资源存放位置 所有的材质球和
  • 【牛客SQL】SQL23 对所有员工的薪水按照salary降序进行1-N的排名

    题目描述 描述 有一个薪水表salaries简况如下 对所有员工的薪水按照salary降序进行1 N的排名 要求相同salary并列且按照emp no升序排列 示例1 输入 drop table if exists salaries CRE
  • 一线城市重金扶持区块链项目 2020年产业规模将超百亿元

    导读 从2017年开始 区块链不仅掀起了行业热浪 也引来了地方政府的极大关注 一线城市开始重金扶持区块链项目 据统计 北京对单个区块链项目最高扶持额上限500万元 广州为上限300万元 深圳上限200万元 一 群雄逐鹿 黄埔领先 作为广州第
  • [ICCV2019]Deep Single-Image Portrait Relighting

    标题 Deep Single Image Portrait Relighting 链接 http openaccess thecvf com content ICCV 2019 papers Zhou Deep Single Image P
  • stm32串口IAP例程解析

    例程获取 可以通过访问官方网站www st com获取示例代码和应用笔记 示例代码 x cube iap usart 应用笔记 an4657 同时本文涉及的所有资料可以从此下载 链接 https pan baidu com s 19nKPc
  • VS2022编译OBS29.1之后的版本

    OBS仓库 https github com obsproject obs studio 在OBS 29 1之前 windows系统编译时需要手动下载deps依赖库文件 具体可参考我的另一篇博客 vs2019编译obs 编译视频 vs201
  • openGL API 之glDrawBuffer(GL_NONE);

    openGL系列文章目录 文章目录 openGL系列文章目录 前言 一 glDrawBuffer官网 二 翻译 前言 openGL API 之glDrawBuffer GL NONE 详解 一 glDrawBuffer官网 glDrawBu