我试图在我的aframe项目中使用画布作为纹理。我找到了一些说明here。它提到:
随着画布的变化,纹理将自动刷新。
但是,我今天尝试一下,只能在init函数中更改/更新画布。此后,无法反映对画布的更新。这是我的实现:
std::set
纹理的颜色变化从未改变。我有什么想念的吗?非常感谢您的任何建议。
答案 0 :(得分:1)
我永远无法使它们与那些指令一起工作(尽管从未检查出是否存在错误或使用不当),但是您可以使用Three.js达到相同的目的:
// assuming this is inside an aframe component
init: function() {
// we'll update this manually
this.texture = null
let canvas = document.getElementById("source-canvas");
// wait until the element is ready
this.el.addEventListener('loaded', e => {
// create the texture
this.texture = new THREE.CanvasTexture(canvas);
// get the references neccesary to swap the texture
let mesh = this.el.getObject3D('mesh')
mesh.material.map = this.texture
// if there was a map before, you should dispose it
})
},
tick: function() {
// if the texture is created - update it
if (this.texture) this.texture.needsUpdate = true
}
以this小故障进行检查。
代替使用tick
函数,只要您从更改画布得到任何回调(鼠标事件,源更改),就可以更新纹理。