当前位置: 首页 > 知识库问答 >
问题:

在OpenGL中渲染到纹理数组的图层

常睿范
2023-03-14

我使用OpenGL 3.2来渲染阴影贴图。为此,我构造了一个渲染深度纹理的帧缓冲区。

要将纹理附加到帧缓冲区,我使用:

glFramebufferTexture2D( GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, shdw_texture, 0 );

这很有效。渲染灯光视图后,我的GLSL着色器可以对深度纹理进行采样,以解决灯光的可见性问题。

我现在试图解决的问题是有更多的阴影贴图,比如说50个。在我的主要渲染过程中,我不想从50个不同的纹理中采样。我可以使用图集,但我想知道:我可以将所有这些阴影贴图作为2D纹理数组的切片传递吗?

那么,以某种方式创建一个深度格式的GL_纹理_2D_数组,并将数组的一层绑定到帧缓冲区?

帧缓冲区是否可以通过纹理阵列层而不是仅通过深度纹理进行深度备份?

共有1个答案

宗涵蓄
2023-03-14

通常,您需要区分是要创建分层帧缓冲区(请参见分层图像),还是要将多层纹理的单层附加到帧缓冲区。

使用glFrameBufferTexture 3D将3D纹理(TEXTURE_3D)或数组纹理的层附加到帧缓冲区,或使用glFrameBufferTexture Layer将三维或数组纹理的层附加到帧缓冲区。在任何一种情况下,最后一个参数指定纹理的

可以使用glFramebufferTexture附加分层附件。请参见分层渲染。

 类似资料:
  • 我正在尝试使用OpenGL GLSL着色器渲染到纹理。首先,我尝试用白色填充30x30纹理的每个像素。我将顶点着色器索引从0传递到899,表示纹理的每个像素。对吗?顶点着色器: 片段着色器:

  • 纹理根本不渲染,几何体都是黑色的。 截图:http://i.imgur.com/ypMdQY4.png 代码:http://pastebin.com/SvB8rxxt 我也会链接到我试图渲染的纹理和transformations.py模块,但是我没有被允许放置两个以上链接的声誉。谷歌搜索“现代opengl 02”会给你前者的教程,“转换py”会给你后者。 搜索“纹理材料开始”以查找纹理材料的设置位

  • 我做了一个在上面渲染天空盒和粒子的应用程序。我想添加一些效果,我需要使用帧缓冲区来渲染天空盒、粒子颜色、深度和位置以分离纹理。然后我想使用简单的着色器来使用这些纹理中的值并以适当的方式混合它们。我为纹理、帧缓冲区和屏幕四边形(渲染简单的矩形)编写了辅助类,但不幸的是——当我尝试使用它时没有任何渲染。 当绑定帧缓冲区被注释掉时,我的场景如下所示: 修改着色器表明深度和位置值计算正确。因此问题在于纹理

  • 使用LWJGL的OpenGL版本1.1和2D纹理,我发现自己卡住了... 出于某种原因,LWJGL引擎不会在2D图层上渲染加载的纹理...相反,我得到了一个白色正方形... 我假设我很有可能在代码的某个地方遗漏了什么..以下是与此类事件相关的全部代码.. 加载OpenGL环境: 进入2D绘图模式(用于绘制纯色正方形的功能-通过glcolor函数进行测试,然后通过glvertex调用尺寸): 加载映

  • 这是代码中唯一可能有错误的部分: 你能在这段代码中看到什么错误吗?启用glEnable(GL_TEXTURE_2D)并没有什么不同。纹理坐标是正确的,片段和顶点着色器肯定是正确的。 解决了这不是问题,我仍在使用glGenerateMipmap(…)在glTexImage2D(…)之前。真正的问题是,当我的图像是GL_RGB格式时,我通过了格式GL_RGBA。另外我的t-

  • 所以我有一个非常简单的glsl着色器,可以用纹理和平行光渲染对象。 现在我有一个非常艰难的时间试图得到的纹理显示,其他一切工作,除此之外。 当我禁用着色器(glUseProgram(0))时,纹理以黑色和白色渲染,但当我启用它时,整个网格是单一颜色,没有纹理,当我尝试不同的纹理时,它会改变颜色。 这就是我加载纹理的方式 这就是我如何绑定我的纹理 这是我的顶点着色器 这是我的碎片着色器 最后但并非最