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.
Réponses
Trop de publicités?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:
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.
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.