在以下代码中,我正在使用正交相机和映射为纹理的画布来设置一个非常基本的场景。我将一些白色文本放在透明画布上,如果我使用canvas.toDataURL(),效果并不明显。然而,当我将画布内容应用于材质作为纹理,并在超标准的2D场景中渲染它时,我的文本周围会出现黑色线条,可能是由于奇怪的抗锯齿效果导致的。在此示例中,渲染器清除颜色、材质和文本都是纯白色。以下是屏幕截图:
。
![screenshot](https://istack.dev59.com/HOU9D.webp)
var camera = new THREE.OrthographicCamera(window.innerWidth / - 2,
window.innerWidth / 2,
window.innerHeight / 2,
window.innerHeight / - 2, 0, 10);
var scene = new THREE.Scene();
canvas = document.createElement('canvas');
canvas.width = 300;
canvas.height = 300;
var context = canvas.getContext('2d');
context.fillStyle = "white";
context.font = "bold 72px Arial";
context.fillText("Zibri", 50, 100);
var texture = new THREE.Texture(canvas);
var geometry = new THREE.PlaneGeometry(canvas.width, canvas.height);
texture.needsUpdate = true;
var material = new THREE.MeshBasicMaterial({ color: 0xffffff, map: texture, transparent: true });
var mesh = new THREE.Mesh(geometry, material);
scene.add(mesh);
renderer = new THREE.WebGLRenderer({ antialias: false });
renderer.setSize( window.innerWidth, window.innerHeight );
renderer.setClearColor(0xffffff)
document.body.appendChild( renderer.domElement );
camera.lookAt(scene.position);
renderer.render(scene, camera);
texture.magFilter = THREE.NearestFilter; texture.minFilter = THREE.NearestFilter; texture.generateMipmaps = false;
- WestLangley