Pertanyaan Menyebarkan aplikasi WebGL sebagai aplikasi iOS atau Android asli?


Adakah yang tahu cara Anda dapat menerapkan aplikasi WebGL sebagai aplikasi iOS atau Android asli? Middleware komersial dapat diterima, meskipun proyek terbuka akan lebih disukai. Terima kasih.


42
2018-06-11 02:56


asal


Jawaban:


Sebagai perpanjangan jawaban Joris '(yang tampaknya didasarkan pada karya Nathan de Vries), berikut ini adalah kode yang saya perlukan untuk mengaktifkan WebGL dalam SDK iOS 5.0:

Di suatu tempat di dekat bagian atas implementasi pengontrol tampilan Anda:

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

Secara pemrograman membuat UIWebView dan mengaktifkan WebGL:

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

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

saya membuat aplikasi contoh yang menunjukkan WebGL berjalan di layar penuh iPhone / iPad UIWebView, menggunakan situs web Scrap WebGL http://glsl.heroku.com sebagai tujuan. Berhati-hatilah bahwa beberapa contoh di sana akan menggilas bahkan iPad 2 hingga berhenti, berpotensi menyebabkan hard reboot. Kinerja di sana tampaknya menunjukkan mengapa WebGL masih dalam status resmi yang tidak didukung di WebKit seluler.

Tentu saja, seperti yang telah dinyatakan, ini tidak dijamin untuk bekerja pada versi iOS di masa mendatang dan akan mendapatkan aplikasi Anda ditolak dari App Store. Ini hanya sangat berguna untuk pekerjaan hobi dan pengujian internal.

Contoh dari WebGL yang berjalan di iPad 2 saya:

enter image description here


23
2018-01-21 17:14



WebKit di iOS benar-benar mendukung WebGL, pada 4.x (tidak yakin versi .x) yang mana. Ini diaktifkan di tampilan web yang digunakan oleh kerangka iAd, semua penggunaan lain dari WebKit (Safari dan UIWebView) telah menonaktifkan WebGL.

Adalah mungkin untuk mengaktifkan WebGL menggunakan private API (ini tidak akan melewati proses pengiriman). Di subkelas tampilan web Anda:

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

(melalui)

Ini setidaknya akan memungkinkan Anda untuk mulai bereksperimen dengan WebGL di iOS.

Tidak yakin tentang dukungan WebGL di Android. Cukup komentar terbaru tentang masalah ini di pelacak Android menyarankan itu belum tersedia.

Meja dukungan yang bagus untuk WebGL di (ponsel) browser: Kapan saya bisa menggunakan WebGL

Cara terbaik untuk pergi untuk saat ini tampaknya adalah menyertakan WebKit versi WebGL yang Anda aktifkan di wrapper aplikasi Anda untuk iOS dan Android.


6
2017-11-22 17:07



Karena versi iOS WebKit tidak mendukung WebGL secara asli, saya pikir Anda memiliki dua opsi:

  • Menerapkan API WebGL dalam konteks JavaScript dari WebView sendiri dengan meneruskan panggilan ke OpenGL asli melalui iframe RPC atau lebih. Tidak ada cara yang bersih untuk memanggil (Objective-) C fungsi dari JavaScript di iOS, sayangnya. Kinerja bisa jadi masalah.

  • AOT-Compile atau menafsirkan JavaScript dalam runtime pihak ketiga, kemudian implementasikan WebGL dari sana. Kompiler JIT tidak diizinkan di iOS, jadi sesuatu seperti V8 tidak akan berfungsi. Appcelerator Titanium secara statis mengkompilasi JavaScript sejauh yang saya tahu, dan juga memiliki seorang juru bahasa. Anda bisa menggunakannya, tetapi Anda masih perlu mengimplementasikan lem WebGL sendiri.

Saya tidak mengetahui adanya jembatan WebGL yang ada untuk iOS, jadi saya pikir Anda akan perlu menulisnya sendiri atau meminta seseorang melakukannya untuk Anda. Satu masalah yang mungkin tidak dapat diatasi adalah jika Anda menggunakan sesuatu selain WebGL untuk menampilkan barang - mis. HTML, 2D <canvas>, dll. Menggabungkan tampilan WebView dengan framebuffer OpenGL akan menjadi agak rumit.

Saya tidak tahu banyak tentang Android, tetapi mengingat aturannya lebih santai di sana, ada kemungkinan untuk memasang browser yang kompatibel dengan WebGL di sana.


1
2018-06-16 11:02



Saya tidak berpikir ada alat konverter yang mudah. Anda mungkin harus mengambil basis kode WebGL dan menulis ulang di OpenGL untuk kedua platform, untuk membuat aplikasi asli.


1
2018-06-26 13:28



Ini belum siap, tetapi ForPlay mungkin dapat bertindak sebagai platform pengembangan umum untuk Android dan WebGL melalui GWT.


1
2017-07-08 22:08



Kumpulan WebKit dan sumber daya aplikasi Anda (.js, tekstur, dll) ke dalam aplikasi iOS atau Android tidak terdengar terlalu sulit. Saya berasumsi bahwa karena Google dan Apple adalah kontributor utama untuk proyek WebKit, semua dukungan yang diperlukan (untuk multitouch dan hal-hal lain) sudah ada di sana.

NB: banyak aplikasi iOS menggunakan Javascript yang diartikan atau Lua. Aturan ada untuk mencegah aplikasi Anda mengeksekusi kode pihak ketiga (terutama dari internet), bukan kode yang Anda bundel di aplikasi Anda sendiri.

EDIT: Untuk memperjelas, saya pikir Anda perlu menerapkan tampilan web Anda sendiri menggunakan webkit (dibangun dari sumber) untuk menggunakan WebGL dan lulus proses penyaringan Apple, karena mengaktifkan WebGL di tampilan web yang disediakan Apple akan membuat aplikasi Anda ditolak.


1
2017-08-17 08:31



Ada beberapa opsi untuk dapat menerapkan aplikasi WebGL asli. EjectaGL adalah implementasi WebGL yang hebat tetapi sedikit lebih sulit untuk dikuasai (http://codehum.com/stuff/ejectagl/).

Pilihan lain adalah Ludei yang baru-baru ini mengumumkan dukungan mereka untuk WebGL pada iOS dan Android. Lebih mudah digunakan dan mendukung akselerasi untuk kanvas HTML5 di 2D dan 3D melalui WebGL. Ini juga menyediakan cara untuk memonetisasi aplikasi Anda menggunakan IAP, iklan, dan banyak ekstensi. Jauh lebih mudah untuk menguji menggunakan Aplikasi Peluncur CocoonJS dan cloud compiler mereka.

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


0
2018-06-04 06:42



Mencoba Phonegap. Hal ini memungkinkan Anda untuk membangun aplikasi "asli" HTML + CSS + JS menggunakan penginstalan Webkit standar di OS Anda. Dan ini menyediakan javascript-to-native bridge untuk memungkinkan Anda melakukan hal-hal yang tidak mungkin dalam webapps murni.


-3
2018-06-11 04:21