WebGL 真的很慢。
每帧 100 个精灵 - 好的,
每帧 1000 个精灵 - 需要优化,
10000 个精灵,fps 从 40 下降到 20fps。
我根本不需要 3D。我不需要滤镜、着色器、灯光和其他 3D 东西。我只需要快速的 2d 画布(没有像素平滑),能够渲染 png 和渲染形状以进行调试(线条、条形、圆形)。是否有可能从 PlayN 引擎中排除 WebGL 并切换到 HTML5 Canvas?(我想它会比 WebGL 快得多。)
WebGL 真的很慢。
每帧 100 个精灵 - 好的,
每帧 1000 个精灵 - 需要优化,
10000 个精灵,fps 从 40 下降到 20fps。
我根本不需要 3D。我不需要滤镜、着色器、灯光和其他 3D 东西。我只需要快速的 2d 画布(没有像素平滑),能够渲染 png 和渲染形状以进行调试(线条、条形、圆形)。是否有可能从 PlayN 引擎中排除 WebGL 并切换到 HTML5 Canvas?(我想它会比 WebGL 快得多。)
这与 WebGL 无关。WebGL 速度很快。它也与 PlayN 无关。您要求使用 SUV 参加 Indy 500 比赛。SUV永远无法与专业赛车相提并论。但是,如果您必须在未知的地形上开车,带孩子去看足球比赛,并在回家的路上买杂货,那么 SUV 将是一个更好的选择。
在您描述的情况下,缓慢既不是 WebGL 调用也不是 Canvas.drawImage 调用,而是 PlayN 执行完整的仿射变换乘法来计算每帧上每个精灵的当前变换。这是你 99% 的时间想要的,因为大多数游戏一次在屏幕上的精灵少于 1000 个,并且更喜欢能够以任何他们喜欢的方式操纵这些精灵的灵活性。
如果您真的需要 10,000 个精灵,并且您不只是尝试将场景图引擎用作粒子系统,那么请使用ImmediateLayer
图层并调用 Surface.drawImage 将图像绘制到需要的位置,并保持数学这将他们的位置确定到最低限度。