Развертывать приложения WebGL в качестве приложений для iOS или Android?

Кто-нибудь знает, каким образом вы можете развернуть приложение WebGL в качестве родного приложения для iOS или Android? Коммерческое промежуточное ПО приемлемо, хотя предпочтительным будет открытый проект. Благодарю.

Solutions Collecting From Web of "Развертывать приложения WebGL в качестве приложений для iOS или Android?"

В качестве дополнения к ответу Joris (который, как представляется, основан на работе Натана де Фриза ), следующий код, который мне нужен для включения WebGL в iOS 5.0 SDK:

Где-то рядом с верхней частью реализации контроллера вашего представления:

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

Программно создавая UIWebView и включающий WebGL:

 UIWebView *webDetailView = [[UIWebView alloc] initWithFrame:mainScreenFrame]; id webDocumentView = [webDetailView performSelector:@selector(_browserView)]; id backingWebView = [webDocumentView performSelector:@selector(webView)]; [backingWebView _setWebGLEnabled:YES]; 

Я создал образец приложения , демонстрирующий WebGL, работающий в полноэкранном UIWebView iPhone / iPad с использованием веб-сайта веб-сайта WebGL http://glsl.heroku.com в качестве места назначения. Будьте осторожны, что некоторые из этих примеров приведут к остановке iPad 2, что может привести к жесткой перезагрузке. Показатели, по-видимому, указывают на то, почему WebGL все еще находится в официально неподдерживаемом состоянии в мобильном WebKit.

Конечно, как уже было сказано, это не гарантируется для работы над будущими версиями iOS, и ваше приложение будет отклонено из App Store. Это действительно полезно для хобби и внутреннего тестирования.

Пример использования WebGL на моем iPad 2:

Введите описание изображения здесь

WebKit на iOS фактически поддерживает WebGL, начиная с 4.x (не уверен, какая версия .x). Он включен в веб-просмотре, используемом инфраструктурой iAd, и для других приложений WebKit (Safari и UIWebView) WebGL отключен.

Можно включить WebGL с использованием private API (это не будет проходить процесс отправки). В вашем подклассе webview:

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

( Через )

Это, по крайней мере, позволит вам начать экспериментировать с WebGL на iOS.

Не уверен в поддержке WebGL на Android. Недавние комментарии по этой проблеме на Android-трекеру показывают, что он пока недоступен.

Хорошая таблица поддержки для WebGL в (мобильных) браузерах: когда я могу использовать WebGL

Кажется, теперь лучший способ включить свою собственную версию WebKit, поддерживающую WebGL, в вашу оболочку приложения для iOS и Android.

Поскольку версия IOS версии WebKit не поддерживает WebGL изначально, я думаю, у вас есть два варианта:

  • Внедрите API WebGL в контексте JavaScript самого WebView, переадресовывая вызовы на собственный OpenGL через iframe RPC или так далее. К сожалению, нет четкого способа вызова (Objective-) C-функций из JavaScript на iOS. Производительность может быть проблемой.

  • AOT-компиляция или интерпретация JavaScript в сторонней среде исполнения, а затем реализация WebGL. JIT-компиляторы запрещены в iOS, поэтому что-то вроде V8 не будет работать. Насколько я знаю, Appcelerator Titanium статически компилирует JavaScript, а также имеет интерпретатор. Вы могли бы использовать это, но вам все равно нужно будет использовать клей WebGL самостоятельно.

Я не знаю каких-либо существующих мостов WebGL для iOS, поэтому я думаю, вам нужно будет либо написать его самостоятельно, либо заставить кого-то сделать это за вас. Одна из проблем, которые невозможно преодолеть, заключается в том, что вы используете что-то другое, кроме WebGL, для отображения материала – например, HTML, 2D <canvas> и т. Д. Объединение отображения WebView с фрейм-буфером OpenGL будет довольно сложным.

Я мало знаю об Android, но, учитывая, что правила там более расслаблены, возможно, там будет встроен WebGL-совместимый браузер.

Я не думаю, что есть простые инструменты конвертера. Вероятно, вам придется взять свою кодовую базу WebGL и переписать в OpenGL для обеих платформ, чтобы создать собственные приложения.

Он еще не готов, но ForPlay может выступать в качестве общей платформы разработки для Android и WebGL через GWT.

Объединение WebKit и ресурсов вашего приложения (.js, текстур и т. Д.) В приложение iOS или Android не звучит слишком сложно. Я предполагаю, что, поскольку Google и Apple являются основными участниками проекта WebKit, вся необходимая поддержка (для мультитач и других материалов) уже существует.

PS: многие приложения iOS используют интерпретируемый Javascript или Lua. Существуют правила, запрещающие вашему приложению выполнять сторонний код (esp из Интернета), а не код, который вы связываете в своем собственном приложении.

EDIT : Чтобы уточнить, я думаю, вам нужно будет реализовать свой собственный веб-просмотр с помощью webkit (построенный из источника), чтобы использовать WebGL и пройти процесс проверки Apple, поскольку активация WebGL в веб-представлении, предоставленном Apple, заставит ваше приложение отклонить ,

Существует несколько вариантов развертывания собственного приложения WebGL. EjectaGL – отличная реализация WebGL, но немного сложнее освоить ( http://codehum.com/stuff/ejectagl/ ).

Другим вариантом является Ludei, который недавно объявил о своей поддержке WebGL как на iOS, так и на Android. Это проще в использовании и поддерживает ускорение для холста HTML5 как в 2D, так и 3D через WebGL. Он также обеспечивает способ монетизации вашего приложения с помощью IAP, рекламы и множества расширений. Это намного проще проверить с помощью приложения CocoonJS Launcher и их компилятора облака.

http://Www.ludei.com http://blog.ludei.com/webgl-demos-arrive-to-google-play-store/

Попробуйте Phonegap . Он позволяет создавать «родные» приложения HTML + CSS + JS, используя стандартную установку Webkit в вашей ОС. И он предоставляет javascript-to-native мост, чтобы вы могли делать что-то невозможное в чистых webapps.