【发布时间】:2013-06-24 16:44:00
【问题描述】:
最近我有一个项目,我需要使用画布创建大量大型纹理,然后将它们上传到 GPU。当页面加载时,我一直在用完内存(chrome 崩溃)并且“窒息”,因为所有纹理都同时通过 GPU 总线推送。
我决定错开texture.needsUpdate = true; 调用,这样就不会在一次渲染更新中将所有纹理推送到 GPU。
这可行,但我对任何其他解决方案感到好奇......
我发布此内容是因为它可能对其他在启动时加载所有纹理的人有所帮助...
【问题讨论】:
-
我也有类似的问题。我加载了大约 50MB 的 jpeg 数据,我承认这很大,但内存开始被消耗,最终使用了超过 8GB 的 RAM。我已经确定纹理是问题所在。它们是从 JSON 加载器加载的。
-
查看这篇关于使用压缩纹理的帖子,将解释为什么你的 JPG 也会爆炸:blog.tojicode.com/2011/12/compressed-textures-in-webgl.html
-
我会添加一些我发现的东西。它在 2 种或更多材质上使用相同的纹理贴图(不同的着色属性)。 JSON 加载器每次将它们加载为单独的纹理,而不是为每个文件加载 1 个纹理(它应该根据文件名进行组合,这可能被视为错误或功能请求)。
标签: javascript memory three.js webgl