three.js - 抑制三个.js 图像不是两个警告的力量
问题描述
我正在使用three.js 92版和纹理。
多亏了three.js,我已经自动将图像的尺寸转换为2的幂,但是我想抑制它在控制台中显示的警告,而不从其他模块或功能中删除所有其他警告。我会为我的用户隐藏三个.js,但我想从其他库中使用其余的。
有没有办法设置纹理加载器来隐藏它们?
解决方案
你有几个选择。
第一个也是最简单console.warn
的方法是从three.js中删除该行。您说过这不可行,因为您获得了three.js,但还有其他方法。
接下来是覆盖发生警告的代码。这个警告(并且有几个地方可能发生)发生在WebGLRenderer
对象中。
- 下载 THREE.js 源代码。
threejs/build/three.js
在编辑器中打开。- 找到
WebGLRenderer
. - 将整个函数复制到您控制的 JavaScript 文件中。
- 编辑该新文件以删除这些控制台警告。
- 引用项目中的新文件。
- 在您与
THREE
命名空间交互的代码中,但在创建WebGLRenderer
对象之前,请像这样替换THREE.WebGLRenderer
:
THREE.WebGLRenderer = WebGLRenderer;
WebGLRenderer
左边的引用是加载的THREE
命名空间。WebGLRenderer
右侧的引用是新文件中的引用(删除了警告)。
最后,您可以完全禁用警告。此警告应仅在renderer.render
纹理可用时的第一次调用期间出现。我个人不建议这样做,除非您愿意在关闭警告和纹理加载完成之间的过渡期间丢失所有控制台警告。那会是这样的:
var originalWarning = console.warn; // back up the original method
console.warn = function(){}; // now warnings do nothing!
var tex = texLoader.load("texture.png", functon(){
renderer.render(scene, camera); // sends the texture to the GPU
console.warn = originalWarning; // turns warnings back on
});
var mat = new THREE.SomeMaterial({
map: tex
});
推荐阅读
- node.js - 生成 e2big 节点
- html - 如何将一个 div 放在另一个下?
- cmake - 如何从工具链文件中覆盖 cmake 模块的设置?
- php - 混合 iOS / PHP 应用程序。将用户名作为 PHP 变量拉入,以用作 Pusher 对 Swift 代码的兴趣
- python - 从特定的文件名列表中删除大量文件(python)
- java - 格式化 LinkedHashMap
- java - java netbeans Jcombobox的整数太大的情况
- assembly - 在 ARM-Assembly 中将值存储在数组中
- javascript - 重置 React 样式组件的格式
- asp.net - ASP.net 发布新条目时一切正常,但之后调用时,数据消失了