创建材料
var material = new THREE.MeshBasicMaterial();
material.map = new THREE.Texture(canvas);
material.transparent = true;
material.side = THREE.DoubleSide,
material.opacity = 1;
material.map.minFilter = THREE.LinearFilter;
material.map.magFilter = THREE.LinearFilter;
material.map.generateMipmaps = true;
material.map.needsUpdate = true;
获取物料目标
var handle = material.map.__webglTexture;
问题描述
但是为什么句柄总是返回undefined,在r69版本之前可以得到句柄返回WebGLTexture但是r85版本不能让我不明白谢谢:))
答案 0 :(得分:2)
在内部,WebGL属性现在与公共对象分离,因此三个纹理不知道它的__webglTexture对应物。 WebGL渲染器在内部将此信息存储在属性对象(属性包)中。
这样可以实现更好的引擎设计,但是由于它使THREE功能的自定义扩展更难实现(如您所知),因此库作者已经暴露了这些内部属性。
以下是如何访问给定THREE纹理的__webglTexture:
var props = renderer.properties.get(material.map);
var handle = props.__webglTexture;
答案 1 :(得分:0)
Three.js为其实体lazily创建WebGL对象,因此在查询__webglTexture
之前,您可能需要至少使用一次这些材质进行渲染。它也可能仍然不是一个好主意,因为它不是一个记录的属性(__
是它的名字提示:))并且可能会在将来的版本中进行更改。