43 votes

Déployer WebGL applications natives iOS ou Android applications?

Personne ne sait d'une manière dans laquelle vous pouvez déployer une WebGL application native iOS ou Android app? Commercial middleware est acceptable, bien qu'un projet serait préférable. Merci.

23voto

Brad Larson Points 122629

Comme une extension de Joris' réponse (qui semble être basée sur le travail de Nathan de Vries), voici le code que j'ai besoin d'activer WebGL dans la version 5.0 d'iOS SDK:

Quelque part près du haut de votre point de vue contrôleur de mise en œuvre:

@interface UIWebView()
- (void)_setWebGLEnabled:(BOOL)newValue;
@end

Par programme la création d'une UIWebView et l'activation de WebGL:

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

id webDocumentView = [webDetailView performSelector:@selector(_browserView)];
id backingWebView = [webDocumentView performSelector:@selector(webView)];
[backingWebView _setWebGLEnabled:YES];

J'ai créé un exemple d'application qui montre WebGL cours d'exécution dans un iPhone / iPad en plein écran UIWebView, à l'aide de la WebGL pavé site http://glsl.heroku.com en tant que destination. Méfiez-vous que certains de ces exemples, il y aura grind même un iPad 2 à l'arrêt, conduisant potentiellement à un hard reboot. La performance, il semble indiquer pourquoi WebGL est toujours dans un non pris en charge officiellement de l'état dans le mobile WebKit.

Bien sûr, comme cela a été dit, ce n'est pas garanti pour fonctionner sur les futures versions iOS et obtenez votre demande est rejetée à partir de l'App Store. Ce n'est vraiment utile pour les passe-temps et de tests internes.

Un exemple de WebGL qui fonctionne sur mon iPad 2:

enter image description here

6voto

Joris Kluivers Points 5311

WebKit sur iOS prend en charge WebGL, comme de 4.x (je ne sais pas qui .x version). Il est activé dans la webview utilisé par la sai cadre, toutes les autres utilisations de WebKit (Safari et UIWebView) ont WebGL désactivé.

Il est possible d'activer WebGL utilisation privée de l'API (cela ne passera pas le processus de soumission). Dans votre webview sous-classe:

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

(via)

Cela permettra au moins de vous permettre de commencer à expérimenter avec WebGL sur iOS.

Pas sûr au sujet de WebGL appui sur Android. Assez récents commentaires sur la question dans l'Android tracker suggèrent qu'il n'est pas encore disponible.

Une belle table de support de WebGL dans (mobile) navigateurs: Quand puis-je utiliser WebGL

Meilleure façon de le faire pour l'instant semble être d'inclure votre propre WebGL activé la version de WebKit dans votre application wrapper pour iOS et Android.

1voto

pmdj Points 5911

Comme la version iOS de WebKit ne prend pas en charge WebGL en natif, je pense que vous avez deux options:

  • Mettre en œuvre l'API WebGL dans le contexte JavaScript d'une WebView-vous en renvoi d'appels pour le natif OpenGL via iframe RPC ou de la sorte. Il n'y a pas un moyen propre de l'appel (Objectif)C fonctions de JavaScript sur iOS, malheureusement. La Performance pourrait être un problème.

  • AOT-Compiler ou d'interpréter le JavaScript dans un tiers de l'exécution, puis de mettre en œuvre WebGL à partir de là. Les compilateurs JIT sont interdits sur iOS, donc quelque chose comme V8 ne fonctionne pas. Appcelerator Titanium statiquement compile en JavaScript pour autant que je sais, et dispose également d'un interprète. Vous pourriez utiliser, mais vous auriez encore besoin de mettre en œuvre le WebGL colle vous-même.

Je ne suis pas au courant de tout WebGL ponts pour iOS, donc je pense que vous aurez besoin d'écrire vous-même ou demandez à quelqu'un de le faire pour vous. Un problème qui pourrait être impossible à surmonter, c'est si vous utilisez autre chose que WebGL pour afficher des choses - par exemple, en HTML, en 2D <canvas>, etc. Combinant la WebView d'affichage avec un OpenGL framebuffer va être plutôt difficile.

Je ne sais pas beaucoup sur Android, mais en considérant les règles sont de plus en plus détendue là, il pourrait être possible d'incorporer un WebGL-compatible navigateur.

1voto

Benjamin Mayo Points 4133

Je ne pense pas qu'il y a tout facile converter outils. Vous aurez probablement à prendre votre WebGL le code et le réécrire en OpenGL pour les deux plates-formes, pour créer des applications natives.

1voto

Kevin Points 11

Il n'est pas encore prêt, mais ForPlay peut être en mesure d'agir en tant que commune de la plate-forme de développement pour Android et WebGL via GWT.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X