【发布时间】:2021-05-26 08:53:56
【问题描述】:
我真的很惊讶OpenGL Docs 说这是可能的,因为它没有提供任何关于如何实际调用 glGetTexImage 以获得立方体贴图纹理数组的信息。这真的可能吗?
看起来glGetTextureSubImage 是为此而构建的,但不幸的是,我正在使用的 OpenGL 4.3 不支持它。当然,大多数情况下都有一种方法可以实现这一点,而这并不是最近才添加到 API 中的。
【问题讨论】:
我真的很惊讶OpenGL Docs 说这是可能的,因为它没有提供任何关于如何实际调用 glGetTexImage 以获得立方体贴图纹理数组的信息。这真的可能吗?
看起来glGetTextureSubImage 是为此而构建的,但不幸的是,我正在使用的 OpenGL 4.3 不支持它。当然,大多数情况下都有一种方法可以实现这一点,而这并不是最近才添加到 API 中的。
【问题讨论】:
我真的很惊讶 OpenGL 文档说这是可能的
它没有这么说。您可以从立方体贴图数组中检索 mipmap 级别,就像您可以从 2D 数组或 3D 纹理中检索一样。但这意味着为该 mipmap 级别获取每一层的所有面,就像它为 2D 数组和 3D 纹理所做的那样。
如果您希望仅仅来自一层的一个面(您可以通过使用其中一个面目标对非阵列立方体贴图执行此操作),那么您需要隔离此层/面来自立方体贴图数组。具体来说,您需要 create a 2D view texture 的立方体贴图数组,其中仅包含该层/面。你可以从那里执行glGetTexImage。
【讨论】:
GL_TEXTURE_CUBE_MAP_ARRAY 调用glGetTexImage,我将简单地获取整个纹理数组中所有内容的像素数据,即,我将获得每个立方体贴图的每个面的单个缓冲区?如果是这样,我会试一试,也许稍后再实现一个视图纹理,因为它看起来很优雅。