【发布时间】:2016-12-27 19:34:06
【问题描述】:
首先,我想明确一点,当谈到 canvas & three.js 时,我是一个绝对的初学者
我采用了一个现有项目,并正在尝试进行一些小的修改,即在纹理上绘制图像而不是仅仅编写文本。我希望纹理具有设置的背景颜色,并将尝试在其上绘制透明的 png 图像。
我正在尝试修改的方法返回一个纹理以用于另一个函数,该函数当前正在执行更多我可能无法在此解释的内容。
我尝试了几种方法,但似乎无法获得我想要的行为。
方法#1
在这种方法中,我得到了背景颜色,但没有显示图像
var ts = calc_texture_size(size + size * 2 * margin) * 2;
canvas.width = canvas.height = ts;
context.fillStyle = back_color;
context.fillRect(0, 0, canvas.width, canvas.height);
var img = new Image();
function drawIcon() {
context.drawImage(img,0,0);
}
img.onload = drawIcon();
img.src = "img/test.png";
var texture = new THREE.Texture(canvas);
texture.needsUpdate = true;
return texture;
方法 #2
在做了一些研究之后,似乎我应该使用 TextureLoader,但我不知道如何在画布上绘制颜色/形状。在这种情况下,图像会自行显示,没有任何背景颜色。
var imgTex = new new THREE.TextureLoader().load( "img/test.png",function(t){
texture.map = imgTex;
});
texture.needsUpdate = true;
return texture;
如何在彩色背景上成功绘制图像并将其作为纹理返回以供其他功能使用?
【问题讨论】:
-
HERE 是在画布上组合 2 个图像并将其应用为纹理的示例
标签: three.js html5-canvas