如何在OpenGL 4.5中从单个立方体贴图纹理创建立方体贴图数组纹理?

时间:2018-02-18 22:45:37

标签: c++ opengl textures

假设我有多个立方体贴图纹理,我希望将它们全部作为立方体贴图阵列纹理传递给GPU。

首先,我需要创建数组纹理,它应该类似于:

glTextureStorage3D(textureId, 0, internalFormat, width, height, howManyCubeMaps);

假设只有一个mipmap级别。

如何将每个indidivual纹理附加到此纹理数组?

假设每个立方体贴图id都在一个数组中,我想知道你是否可以这样做:

for(uint level=0; level<num_levels; level++)
    glAttach(textureID, cubeID[level], level);

然后我不确定如何在着色器端接收数据并且OpenGL wiki没有明确的docuemtnation

https://www.khronos.org/opengl/wiki/Cubemap_Texture#Cubemap_array_textures

1 个答案:

答案 0 :(得分:2)

  

如何将每个indidivual纹理附加到此纹理数组?

这不是阵列纹理在OpenGL中的工作原理。这甚至不是数组如何在C ++中运行 。想一想:如果你有5个int变量,就无法将int个变量“附加”到int array[5]数组中。唯一的解决方案是将这些变量的复制到数组中的适当位置。在此过程之后,您仍然有5个int个变量,它们与数组之间没有任何关联。

OpenGL也是如此:您只能将这些立方体贴图纹理中的数据复制到立方体贴图数组纹理中的适当位置。 glCopyImageSubData是您最好的选择。