gpt4 book ai didi

javascript - 什么可能导致片段着色器中的纹理变黑?

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

我一直在使用 WebGL,但似乎我无法再设法显示纹理了。片段着色器的输出始终为黑色(轮廓可见)。

我知道这个问题可能会发生在不是 2 的幂的纹理上。不幸的是我的是(256x256)。此外,我之前确实让它们工作过(但我改变了太多而无法回溯问题)。

编辑:我极大地简化了我的程序,并按照 gman 的建议使用了 WebGL Inspector(顺便说一句,很棒的提示)。WebGL Inspector 中的纹理看起来不错。当我注意到这一点时,我正要发布整个代码

var textureUniformLocation = gl.getUniformLocation(shaderProgram, "uSampler");
console.log(textureUniformLocation);
gl.activeTexture(gl.TEXTURE0);
gl.bindTexture(gl.TEXTURE_2D, neheTexture);
gl.uniform1i(textureUniformLocation, 0);

不起作用,在 console.log(...) 之后添加 alert(textureUniformLocation); 会使纹理出现...我现在想知道的是:我的显卡是不是吸毒了?

EDIT2:如果我也在警报中放入一个简单的字符串,它就会起作用。

我能想到发生这种情况的唯一原因是内存管理不当或多个执行线程。据我所知,它们都不是这里的情况。什么样的事情会在 javascript 中导致这样的问题?

任何帮助将不胜感激。

最佳答案

如果检查员看到纹理,那么...它们可能正在加载。 Chrome 和 Firefox 中的行为是否一致?报告的有关alert()的行为让我认为渲染可能发生在纹理加载之前,并且alert()导致刷新(在纹理加载之后)。

还要确保这不是顶点颜色或退化 UV 坐标等顶点属性的问题。

关于javascript - 什么可能导致片段着色器中的纹理变黑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14004166/

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