将WebGL应用程序部署为本机iOS或Android应用程序?

Cod*_*ous 43 mobile android webgl ios

有谁知道你可以将WebGL应用程序部署为本机iOS或Android应用程序?商业中间件是可以接受的,尽管开放项目更可取.谢谢.

Bra*_*son 23

作为Joris答案的扩展(似乎是基于Nathan de Vries工作),以下是我在iOS 5.0 SDK中启用WebGL所需的代码:

在视图控制器实现顶部附近的某处:

@interface UIWebView()
- (void)_setWebGLEnabled:(BOOL)newValue;
@end
Run Code Online (Sandbox Code Playgroud)

以编程方式创建UIWebView并启用WebGL:

UIWebView *webDetailView = [[UIWebView alloc] initWithFrame:mainScreenFrame];

id webDocumentView = [webDetailView performSelector:@selector(_browserView)];
id backingWebView = [webDocumentView performSelector:@selector(webView)];
[backingWebView _setWebGLEnabled:YES];
Run Code Online (Sandbox Code Playgroud)

创建了一个示例应用程序,演示了在iPhone/iPad全屏UIWebView中运行的WebGL,使用WebGL暂存器站点http://glsl.heroku.com作为目标.要小心那里的一些例子甚至会使iPad 2停止运转,这可能导致硬重启.那里的表现似乎表明为什么WebGL在移动WebKit中仍处于官方不受支持的状态.

当然,正如已经说过的,这不能保证在未来的iOS版本上运行,并且会使您的应用程序从App Store中被拒绝.这对于业余爱好工作和内部测试非常有用.

我的iPad 2上运行WebGL的一个例子:

在此输入图像描述

  • @ItayLevin - 这适用于较旧的 iOS 版本。从 iOS 8 开始,UIWebView 正式支持 WebGL(尽管您可能希望使用 WKWebView 来提高性能)。这是一个让它在较旧的 iOS 版本上运行的黑客,以防人们需要它。 (2认同)

Jor*_*ers 6

iOS上的WebKit实际上支持WebGL,从4.x开始(不确定哪个.x版本).它在iAd框架使用的webview中启用,WebKit(Safari和UIWebView)的所有其他用途都禁用了WebGL.

可以使用私有API启用WebGL(这不会通过提交过程).在您的webview子类中:

- (void)setWebGLEnabled:(BOOL)enableWebGL {
    UIWebDocumentView* webDocumentView = [self _browserView];
    WebView* backingWebView = [webDocumentView webView];
    [backingWebView _setWebGLEnabled:enableWebGL];
}
Run Code Online (Sandbox Code Playgroud)

(通过)

这至少可以让你开始在iOS上试验WebGL.

不确定Android上的WebGL支持.相当最近在这个问题上的意见在Android跟踪表明,它是尚未公布.

(移动)浏览器中WebGL的一个很好的支持表:我什么时候可以使用WebGL

去现在最好的办法似乎是包括您自己的启用了WebGL的WebKit版本在你的应用程序包装两种iOS和Android.


Cha*_*pta -3

尝试Phonegap。它允许您使用操作系统上的标准 Webkit 安装来构建“本机”HTML+CSS+JS 应用程序。它提供了一个 javascript 到本机的桥梁,允许您做纯 Web 应用程序中不可能完成的事情。

  • Phonegap 不支持 WebGL,因为它使用该平台的 Webkit——看到有人在 Maemo 版本中启用了 WebGL,但他们似乎没有任何计划切换到自己的 Webkit 以实现 WebGL。 (5认同)