gpt4 book ai didi

opengl - 如何在视觉上定义将纹理数组附加到 FBO 的颜色附加点?

转载 作者:行者123 更新时间:2023-12-04 00:41:36 33 4
gpt4 key购买 nike

我读到在分层渲染中,我们创建了一个 2D 纹理数组(GL_TEXTURE_2D_ARRAY):

glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D_ARRAY, TextureColorbufferName);
glTexParameteri(....
glTexImage3D(...

并可以将其附加到 FBO:
glGenFramebuffers(1, &FramebufferName);
glBindFramebuffer(GL_FRAMEBUFFER, FramebufferName);
glFramebufferTexture(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, TextureColorbufferName, 0);

我发现在视觉上难以理解的是如何将一层纹理绑定(bind)到 FBO 中的单一颜色附着点?颜色附件 0 (或任何 GL_COLOR_ATTACHMENTi )本身不是一个“图像”吗?

更详细地说:

在阅读纹理数组之前,这是我对 FBOS 的理解
                      +--------------+
+-----------+| FBO object ++--------------------------------------------+
| | +---------------------+ |
| +--------------+ | |
| + | |
| | | |
| | | |
v v v v
+-----------------+ +-----------------+ +-----------------+ +------------------+
|color attachment | |color attachment | |depth attachment | |stencil attachment|
| 0 | | 1 | | | | |
+-----------------+ +-----------------+ +-----------------+ +------------------+
(this too)
(this is actually (this is also a (this too)
one texture or texture of renderbuffer)
one renderbuffer)

但是在阅读了纹理数组之后,真的是这样吗?
                          +--------------+
+-----------+| FBO object ++--------------------------------------------+
| | +---------------------+ |
| +--------------+ | |
| + | |
| | | |
| | | |
v v v v
+-----------------+ +-----------------+ +-----------------+ +------------------+
|color attachment | |color attachment | |depth attachment | |stencil attachment|
| 0 | | 1 | | | | |
+-----+--+------+-+ +-----------------+ +-----------------+ +------------------+
| | |
| | v+
| v+ +----------------------------------+
| +--------->+ v
v | +
+----------------+ +---v-------------+ |
| | | | +---v------------+
|texture array[0]| |texture array[1] | |texture array[n]|
| | | | | |
| | | | | |
| | | | | |
+----------------+ +-----------------+ +----------------+

即每个附件本身是各种纹理的集合吗?

我很难想象一种颜色的附着点如何映射到多个纹理。

如果我从 1 个 FBO(绑定(bind)到 texture_2d_array)到另一个(绑定(bind)到 texture_2d)会发生什么

最佳答案

纹理是图像的集合。您不将纹理附加到 FBO 附加点;您将纹理内的图像附加到 FBO 附加点。

因此,您绝不会将多个纹理附加到单个附加点。

Array textures只是在 mipmap 级别中存储图像数组的纹理。非数组 2D 纹理每个 mipmap 级别仅存储一个图像。一个立方体贴图为每个 mipmap 存储 6 个图像。数组纹理存储用户提供的每个 mipmap 数量的图像。

但是,您可以附加 layered image到一个附着点。 array texture 的 mipmap 级别是一个分层的图像,其他一些东西也是如此。

从分层图像构建的 FBO 可用于 layered rendering通过几何着色器。这允许 GS 将特定的原始输出通过管道传输到分层 FBO 内的特定层索引。

你如何想象这取决于你。

关于opengl - 如何在视觉上定义将纹理数组附加到 FBO 的颜色附加点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18286849/

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