首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在THREE.JS中预初始化纹理

如何在THREE.JS中预初始化纹理
EN

Stack Overflow用户
提问于 2017-10-27 08:14:30
回答 1查看 1.2K关注 0票数 5

我预先加载和创建材料纹理,然后开始渲染和动画的对象。

但三个JS上传纹理到GPU时,只有对象将在相机中显示。

因此,当新对象出现在屏幕上时,动画就会因为纹理发送到GPU上而被抓取。问题是如何在创建纹理时将纹理发送到GPU,以避免运行时的纹理?

将图像加载到GPU需要很长时间。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-27 09:58:06

我的猜测是遍历对象树,将每个对象的frustumCulled标志设置为false,调用renderer.render(scene, ...)一次,然后将标志恢复为true (或其他标志)。

代码语言:javascript
复制
function setAllCulled(obj, culled) {
  obj.frustumCulled = culled;
  obj.children.forEach(child => setAllCulled(child, culled));
}

setAllCulled(scene, false);
renderer.render(scene, camera);
setAllCulled(scene, true);

您也可以调用renderer.setTexture2D(texture, 0)来强制初始化纹理。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46970420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档