gpt4 book ai didi

opengl - 概念 : what is the use of glDrawBuffer and glDrawBuffers?

转载 作者:行者123 更新时间:2023-12-02 02:18:29 24 4
gpt4 key购买 nike

当我遇到这两种方法时,我正在阅读红皮书 OpenGL 编程指南,这让我觉得没有必要,因为我们已经可以使用 layout (location = )< 指定输出将转到哪个颜色缓冲区glBindFragDataLocation。我在这里误解了什么吗?

最佳答案

并非所有附加到帧缓冲区的颜色附件都必须由着色器程序渲染。 glDrawBuffers指定要绘制的颜色缓冲区列表。

例如假设您有一个带有 3 个颜色附件 GL_COLOR_ATTACHMENT0GL_COLOR_ATTACHMENT1GL_COLOR_ATTACHMENT2 的帧缓冲区:

片段着色器

layout (location = 0) out vec4 out_color1;
layout (location = 1) out vec4 out_color2;

drawbufferr 规范:

const GLenum buffers[]{ GL_COLOR_ATTACHMENT2, GL_COLOR_ATTACHMENT0 };
glDrawBuffers( 2, buffers );

out_color1 将其数据发送到索引 0 处的绘图缓冲区(由于 location = 0 声明)。上面对 glDrawBuffers 的调用将此缓冲区设置为 GL_COLOR_ATTACHMENT2。同样,out_color2 将其数据发送到索引 1,该索引设置为 GL_COLOR_ATTACHMENT0。附件 1 未写入数据。

关于opengl - 概念 : what is the use of glDrawBuffer and glDrawBuffers?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51030120/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com