【发布时间】:2018-07-29 04:07:55
【问题描述】:
假设我有许多立方体贴图纹理,我希望将它们全部作为立方体贴图数组纹理传递给 GPU。
首先我需要创建数组纹理,它看起来应该是这样的:
glTextureStorage3D(textureId, 0, internalFormat, width, height, howManyCubeMaps);
假设只有一个 mipmap 级别。
然后如何将每个单独的纹理附加到这个纹理数组?
如果每个立方体贴图 id 都在一个数组中,我想知道你是否可以这样做:
for(uint level=0; level<num_levels; level++)
glAttach(textureID, cubeID[level], level);
然后我不确定我应该如何在着色器端接收数据,并且 OpenGL wiki 上没有明确的文档说明
https://www.khronos.org/opengl/wiki/Cubemap_Texture#Cubemap_array_textures
【问题讨论】:
-
"OpenGL wiki 没有明确的文档说明" 它有明确的文档。它告诉您采样器类型是什么。它告诉你立方体贴图数组如何改变纹理访问函数的接口。它没有的是可复制粘贴的代码。 Cubemap 数组就像 2D 和 1D 数组纹理一样工作:它们的纹理坐标需要一个额外的组件,即数组层。如果您有关于如何使用立方体贴图数组的具体问题,可以提出。