React Native 是否适合构建 OpenGL 加速的 2D 游戏?

Is React Native suitable for building an OpenGL-accelerated 2D-game?

假设我想构建类似 2D 横向卷轴游戏的东西。 React Native 在性能方面是否合适?例如,我可以使用 OpenGL 加速吗?或者它可能会比仅使用 WebGL 和 HTML5 慢吗?

进一步研究并得出以下信息:

显然有一个包含 WebGL 上下文的 GLView: https://docs.expo.io/versions/latest/sdk/gl-view.html

在那个页面上是这样写的:

Any WebGL-supporting library that expects a WebGLRenderingContext could be used. Some times such libraries assume a web JavaScript context (such as assuming document). Usually this is for resource loading or event handling, with the main rendering logic still only using pure WebGL. So these libraries can usually still be used with a couple workarounds. The Expo-specific integrations above include workarounds for some popular libraries.

还有来自世博会的 Twitter 评论,其中特别提到 'games':

Expo Graphics gives you the power of GL combined with Expo+React Native. It 
is the foundation for image filters, games, and special effects.

这里应该有一个演示: https://github.com/gre/gl-react

那里没有列出多少使用 React Native 构建游戏的项目。尽管如此,原生 OpenGL 加速的 WebGL 上下文接口还是带来了希望。

我用过react-native-webgl to build a minesweeper game。该库提供了渲染 16x30 单元格网格所需的性能增益,可以从一种状态快速过渡到另一种状态。在某些情况下,游戏需要一次重新渲染数十个甚至数百个单元格。默认的 React Native 渲染器速度不够快,无法在用户注意到延迟的情况下执行此操作。

请注意,虽然 react-native-webgl 解决了性能问题,但它需要您编写低级代码,例如创建着色器、管理顶点等。而且我还没有找到构建在 react-native 之上的库-webgl 可以完成我的任务。

因此,如果您真的需要或想要在您的游戏中使用 React Native,请为 Expo 使用 react-native-webgl 或 GLView。否则使用不同的技术,如 Unity。

你可以找到我游戏的源代码here