【发布时间】:2023-03-31 16:02:01
【问题描述】:
我为 Javascript 画布 here 找到了一个兔子标记。
当然,我知道他们的默认渲染器使用的是 webGL,但我现在只对原生 2D 上下文性能感兴趣。我在 Firefox 上禁用了 webGL,在生成 16500 个兔子后,计数器显示 FPS 为 25。我决定编写自己的非常简单的小渲染循环,看看 Pixi 增加了多少开销。令我惊讶的是,我的 FPS 仅为 20。
我大致相当于JSFiddle。
所以我决定看看他们的源代码here,看起来他们的渲染代码并不神奇:
do
{
transform = displayObject.worldTransform;
...
if(displayObject instanceof PIXI.Sprite)
{
var frame = displayObject.texture.frame;
if(frame)
{
context.globalAlpha = displayObject.worldAlpha;
context.setTransform(transform[0], transform[3], transform[1], transform[4], transform[2], transform[5]);
context.drawImage(displayObject.texture.baseTexture.source,
frame.x,
frame.y,
frame.width,
frame.height,
(displayObject.anchor.x) * -frame.width,
(displayObject.anchor.y) * -frame.height,
frame.width,
frame.height);
}
}
奇怪的是,似乎他们在渲染循环中使用了一个链表,并且两个应用程序上的配置文件显示,虽然我的版本每帧分配相同数量的 cpu 时间,但它们的实现显示 cpu 使用率处于峰值。
不幸的是,我的知识到此结束,我很好奇是否有人可以了解正在发生的事情。
【问题讨论】:
标签: javascript html canvas