Wariant A jest prawdopodobnie technicznie najszybsze, ale przyniesie ze sobą całe mnóstwo innych problemów, które trzeba będzie obsługiwać ręcznie. Jeśli aktualizujesz tekst (zdrowie, amunicja, itp.), Musisz wymyślić procedurę rutowania tekstu, a to nie jest wcale banalne. Jeśli korzystasz z interfejsu za pomocą myszy lub klawiatury, musisz sam sobie z tym poradzić, a szanse na to, że robisz to wystarczająco wydajnie i wydajnie, aby zapewnić lepsze wrażenia niż natywne widżety przeglądarki, są niewielkie. Warto zauważyć, że dużo pracy wymaga odrobinę większej szybkości.
Opcja B jest, moim zdaniem, drogą do zrobienia. Przeglądarka jest całkiem dobra w komponowaniu i mimo, że z tego powodu będzie perfekcyjnie trafiony, chyba że robisz naprawdę szalony szczegółowy HUD, przypuszczam, że trafienie będzie znikome w porównaniu do innych części twojej aplikacji (jak logika JS). Dodatkowo jest to droga, która powinna "magicznie" polepszyć się wraz z upływem czasu, a przeglądarki stają się bardziej wydajne w tym, co robią. IMO: Największym minusem jest to, że możesz natknąć się na błędy renderowania, jeśli używasz niektórych najnowszych i najlepszych efektów CSS, aby stylizować HUD tak, jak tego chcesz, ale znowu powinno to zniknąć w miarę upływu czasu.
Opcja C jest, według mojej wiedzy, niedostępna w obrębie jednego płótna. Możesz mieć oddzielne płótno 2D nad warstwą 3D i narysować do niego HUD, ale w tym momencie dziedziczysz wszystkie problemy A i B bez żadnych korzyści. Nie widzę powodu, aby go polecać.
Uważam, że jedną z największych zalet, jakie WebGL ma na wielu natywnych platformach 3D jest to, że ma trywialny dostęp do jednego z najpopularniejszych i najbardziej elastycznych frameworków UI na świecie (HTML). Ignorowanie tej przewagi będzie kolosalnym wysiłkiem przy bardzo niewielkich korzyściach. Skorzystaj z dostępnych narzędzi i nie martw się zbytnio o utracone milisekundy z tego powodu. Obiecuję, że podczas pracy nad grą będziesz miał znacznie większe problemy, a twój czas i wysiłek zostaną znacznie lepiej wydane niż próba wymyślenia tego koła.
Doskonała odpowiedź, ma wiele sensu, dziękuję bardzo! – JayDee
Pamiętaj, że jeśli wybierzesz opcję C (płótno 2D nałożone na obszar roboczy 3D), osiągniesz bardzo dobre wyniki wydajności w systemie iOS 8. To podejście zmniejszyło o połowę moją liczbę klatek na sekundę! – lazd