Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

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

@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];

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

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

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

enter image description here

Ответ 2

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

Можно включить WebGL с помощью частного 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.

Ответ 3

Так как версия 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 < холст > , и т.д. Объединение отображения WebView с фреймбуфером OpenGL будет довольно сложным.

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

Ответ 4

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

Ответ 5

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

Ответ 6

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

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

РЕДАКТИРОВАТЬ. Чтобы уточнить, я думаю, вам нужно будет реализовать свой собственный веб-просмотр с помощью webkit (построенный из исходного кода), чтобы использовать WebGL и передать процесс проверки Apple, как активировать WebGL в Веб-представление, предоставленное Apple, отклонит ваше приложение.

Ответ 7

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

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

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

Ответ 8

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