【问题标题】:In OpenGL, how do I use glGetTexImage to get pixel data for a face of a texture of type GL_TEXTURE_CUBE_MAP_ARRAY?在 OpenGL 中,如何使用 glGetTexImage 获取 GL_TEXTURE_CUBE_MAP_ARRAY 类型纹理的面的像素数据?
【发布时间】:2021-05-26 08:53:56
【问题描述】:

我真的很惊讶OpenGL Docs 说这是可能的,因为它没有提供任何关于如何实际调用 glGetTexImage 以获得立方体贴图纹理数组的信息。这真的可能吗?

看起来glGetTextureSubImage 是为此而构建的,但不幸的是,我正在使用的 OpenGL 4.3 不支持它。当然,大多数情况下都有一种方法可以实现这一点,而这并不是最近才添加到 API 中的。

【问题讨论】:

    标签: c++ c opengl


    【解决方案1】:

    我真的很惊讶 OpenGL 文档说这是可能的

    它没有这么说。您可以从立方体贴图数组中检索 mipmap 级别,就像您可以从 2D 数组或 3D 纹理中检索一样。但这意味着为该 mipmap 级别获取每一层的所有面,就像它为 2D 数组和 3D 纹理所做的那样。

    如果您希望仅来自一层的一个面(您可以通过使用其中一个面目标对非阵列立方体贴图执行此操作),那么您需要隔离此层/面来自立方体贴图数组。具体来说,您需要 create a 2D view texture 的立方体贴图数组,其中仅包含该层/面。你可以从那里执行glGetTexImage

    【讨论】:

    • 我实际上可以一次获取所有数据,因为我可以在 CPU 端处理它。你是说如果我用GL_TEXTURE_CUBE_MAP_ARRAY 调用glGetTexImage,我将简单地获取整个纹理数组中所有内容的像素数据,即,我将获得每个立方体贴图的每个面的单个缓冲区?如果是这样,我会试一试,也许稍后再实现一个视图纹理,因为它看起来很优雅。
    猜你喜欢
    • 2011-07-04
    • 2021-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多