gpt4 book ai didi

javascript - 纹理未生成有效(可能)

转载 作者:行者123 更新时间:2023-12-03 10:08:16 28 4
gpt4 key购买 nike

我的 WebGL 体积光线转换应用程序即将完成。但是我发现了一个问题。我必须通过 2D 纹理模拟 3D 纹理。这不是问题。我正在用小切片创建一个巨大的纹理。巨大纹理的尺寸约为 4096x4096 像素。问题是,在某些示例中(这取决于切片的数量)正在创建某事。就像下面的图像(我将巨大的纹理填充为白色以使片段更明显)。

Fragment in image - cube should be only white without stripes

我知道条纹的数量取决于巨大纹理中的行数。我生成的纹理接近 4096x4096px(但不完全是)。它可能是 4080x4060 等。我认为,问题是,Three.js 将我的纹理加载到 gpu,但不要将其缩放到 4096x4096..所以我正在读取纹理边界上的片段着色器黑色,因为 webgl 仅适用于方形纹理(512x512、1024x1024 等)。它导致渲染图像中出现黑色条纹。

问题是,我的 Three.js 应用程序不能与 WebGL Inspector 一起工作..所以我不确定。

知道如何解决这个问题吗?

谢谢。

托马斯

编辑:

好的,我找到了问题……和“解决方案”……但解决方案效果不佳。我有 2 个数据集。一个可以,第二个还是一样的错误。

2 种代码变体(每一种都适用于一个数据集,但不适用于第二个数据集):

首先)

 dx = mod(slice, numColsInTexture) / numColsInTexture;
dy = 1.0 - (floor(slice / numColsInTexture) / numRowsInTexture);

第二)

dx = 1.0 -  (mod(slice, numColsInTexture) / numColsInTexture);
dy = (floor(slice / numColsInTexture) / numRowsInTexture);

我真的不知道,为什么它对两个数据集都不起作用...我试图转储 GPU(WebGL 检查器)。两种纹理都在 GPU 上有效加载(相同方向,相同尺寸)。一切都一样。

请帮助我....谢谢。

最佳答案

您的纹理 MIN 和 MAX 过滤器是否设置为 NEAREST?您的 WRAP[ST] 设置为 CLAMP_TO_EDGE?

关于javascript - 纹理未生成有效(可能),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15785838/

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