html - 在同一画布中为 p5.js 和 babylon.js 绘制元素
问题描述
我想在我的画布上创建 3D 形状,但我正在使用ml5.js
和posenet
示例。我能想到的方法有两种:
方法 1:使用 WEBGL 渲染器。但是,它不起作用。运行 3d 形状需要 WEBGL 渲染器,对吗?当我将它与 ml5.js 示例一起使用时,以下内容不起作用:
createCanvas(640,480, WEBGL)
方法 2:使用不同的库。我决定使用babylon.js
但它要求我先创建一个画布元素,然后再进行显示。
<canvas id="renderCanvas" touch-action="none"></canvas>
var canvas = document.getElementById("renderCanvas"); // Get the canvas element
var engine = new BABYLON.Engine(defaultCanvas0, true); // Generate the BABYLON 3D engine
// Add the create scene function
问题: p5创建的canvas与babylon.js不同。我希望显示器是一个而不是两个单独的窗口。怎么做?谢谢!
解决方案
AFAIK 你不能在画布的同一个 webgl 上下文中使用两个渲染器。这意味着,您将需要选择一个渲染器来绘制您的 3D 形状。
画布创建可以是代码的一部分,因此您实际上不必在 HTML 中拥有画布。Babylon.js 只需要在引擎的构造函数中画布:
var canvas = document.createElement("canvas");
// style your canvas
canvas.style.width = "100px";
canvas.style.height = "100px";
// add to wherever you want
document.body.appendChild(canvas);
// use this canvas to init babylon
var engine = new BABYLON.Engine(canvas, true);
// do your thing!
推荐阅读
- javascript - VueJS = Uncaught TypeError:无法读取未定义的属性“设置”
- python - 硒找不到元素 - 没有这样的元素
- javascript - 如何按顺序打印数组中的项目
- twilio - 如何最好地手动回复来自 Twilio 电话号码的文本?
- python - Pandas:如何将接受数组的函数应用于列?
- swift - 在 Swift 中从 SearchBar 中选择单元格
- jq - linux jq的退出码1是什么意思
- gem5 - 有什么办法可以改变Gem5中的频率或电压
- c - 如何不在c中打印重复的组合
- javascript - 如何使用文本框表单 Javascript 添加开放式问题