gpt4 book ai didi

c++ - 需要以合理的精度创建自定义数据 2D 纹理

转载 作者:行者123 更新时间:2023-11-28 02:26:14 25 4
gpt4 key购买 nike

想法

我需要创建一个 2D 纹理,以提供相当精确的浮点值(我的意思是至少与 glsl mediump float 一样精确)。我想在其中存储每个像素与相机的距离。我想要 GL Zbuffer 距离接近平面,只有我自己可爱的自定义数据:>

问题/我尝试过的

  • 通过使用标准纹理作为颜色附件,我无法获得足够的精度。或者我错过了什么?

  • 通过将深度附件纹理用作 GL_DEPTH_COMPONENT32,我得到了近平面距离的钳位 - 垃圾。

所以我似乎坚持不使用深度附件,即使它们最终看起来更精确。那么有没有一种方法可以使标准纹理具有 mediump float 精度?

我觉得奇怪的是 OpenGL 没有用于任意数据的通用容器。我的意思是自定义位深度。或者我又错过了什么!

最佳答案

您可以使用浮点纹理代替每像素 8 位的 RGBA 纹理。然而,对这些格式的支持取决于您要支持的设备,尤其是较旧的移动设备不支持这些格式。

GL_RGBA16F(未测试)示例:

glTexImage2D(GL_TEXTURE_2D, mipmap, GL_RGBA16F, mipmapWidth, mipmapHeight, GL_RGBA, GL_HALF_FLOAT, null);

现在您可以手动将数据存储在片段着色器中。但是,根据您的 MVP,限制仍然会发生。您还需要将数据传递给片段着色器。

还有 32 位格式。

关于c++ - 需要以合理的精度创建自定义数据 2D 纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30570900/

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