html - 是否有任何理由在 2D 游戏/应用程序中使用 WebGL 而不是 2D Canvas?

标签 html html5-canvas webgl

除了性能之外,对于 2D 游戏/应用程序使用 WebGL 而不是 2D-Canvas 是否有任何原因?

换句话说,WebGL 提供了哪些 2D 功能是 2D-Canvas 无法轻松实现的?

最佳答案

换个角度看这个问题:
开发人员如何选择一种技术而不是另一种技术?

  • 更好地集成到他们已经构建的系统中
  • 更易于使用
  • 更快
  • 有更多的能力或更适合他们的需求
  • 费用
  • 更独立于平台

因此,我将讨论 canvas 和 webGL API 在这些特性方面的差异。


canvas 和 webGL 都是 JavaScript API。它们在集成(绑定(bind))方面几乎相同。它们都受到许多可以加快编码速度的库的支持。不同的库为您提供了不同的代码组织方式,因此库的选择决定了您的绘图 API 的结构,但它仍然非常相似(其余代码如何与其绑定(bind)在一起)。如果使用库,编写代码的难易程度取决于库本身。

如果您从零开始编写代码, Canvas API 将更容易学习和理解。它需要最少的数学知识,而且开发快速而直接。

使用 WebGL API 需要强大的数学技能和对渲染管道的全面理解。具备这些技能的人更难找到,生产速度更慢(由于此类代码库的规模和复杂性),因此成本更高。

WebGL 速度更快,功能更多。毫无疑问。它是一种原生 3D API,可让您完全访问渲染管道、代码和效果,执行速度更快,更“可调整”。使用 webGL 真的没有限制。

canvas 和 webGL 都是 html5 的好东西。通常支持一个的设备将支持另一个。

所以,总结一下:

  • 合并绘图 API 代码和其余代码(集成):类似
  • 易用性:
  • (带库)canvas = webGL
  • (从头开始)webGL << canvas
  • 速度:webGL > Canvas
  • 功能:webGL > Canvas
  • 成本:webGL 要贵得多
  • 平台:非常相似

希望这对您有所帮助。

P. S. 开放讨论。

关于html - 是否有任何理由在 2D 游戏/应用程序中使用 WebGL 而不是 2D Canvas?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21603350/

相关文章:

javascript - Threejs创建天空盒场景

html - threejs Canvas todataurl 是空白的

javascript - 从页面中删除 Canvas 并用简单的文本消息替换它

html - 适用于 Windows/.NET 的良好静态站点生成器? (类似于 Pelican、Jekyll 等)

javascript - 如何在 html5 Canvas 中绘制 Fabric js strokeRect?

javascript - 始终将 Canvas 形状显示在另一个形状之上

html - WebGL模型简化

javascript - 如何防止 HTML 表单提交空白

html - 编辑多个 HTML 文件

d3.js - 在 Canvas 上使用 D3 轴功能