gpt4 book ai didi

OpenGL 如何一次绑定(bind)(数万个)数千个纹理?

转载 作者:行者123 更新时间:2023-12-05 05:42:16 27 4
gpt4 key购买 nike

所以我在玩 opengl 时遇到了一点问题。我希望能够一次使用大量(超过 15k)的小型 (128x128) 2D 纹理(在单个绘制调用期间)。问题是我不知道如何有效地做到这一点。以下是我目前发现的方法及其问题:

  1. 据我所知,多纹理的标准解决方案是 GL_TEXTURE_2D_ARRAY,但通常没有足够大的最大尺寸
  2. 作为替代方案,我可以使用 GL_TEXTURE_3D,它通常具有更大的允许深度,但据我所知,我将不得不手动生成 mipmap(或者甚至可能根本不使用它们?)并且可能会出现颜色渗色如果有数千层,则由于浮点错误导致层之间
  3. 我可以尝试使用 GL_TEXTURE_2D_ARRAY 纹理图集,但我还必须考虑如何解决 mipmapping 或 wrapping 问题以及颜色溢出有人可以推荐更好的方法吗?或者说我列出的方法中哪个更好,如果我忽略了什么?

最佳答案

一些跟进,以防有人遇到同样的问题。

我选择尝试我在问题中概述的第三个选项(使用 TEXTURE_2D_ARRAY,每一层都是在启动时从单独的纹理生成的纹理图集)并且确实可以确认,虽然不理想且有些不合常规,但确实如此,至少,工作。此外,虽然将纹理图集阵列用作单个图集并不常见,但纹理图集本身的实践非常好且易于研究。

到目前为止,我总共只使用了几个纹理对其进行了测试,但理论上,使用典型的 8192x8192x2048 2D 纹理图集阵列,我可以拥有多达 800 万个 128x128 纹理(尽管实际上实际数量当然会,由于 VRAM 的限制要少得多)

The proof of concept - a simple 1024x1024 block world with some different textures loaded through an atlas array

关于OpenGL 如何一次绑定(bind)(数万个)数千个纹理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72085821/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com