Некоторые вопросы о WebGL

Я изучаю OpenGL 3.3 и работаю над небольшим игровым движком.

но чем больше я исследую, тем больше мне кажется, что офлайн-игры для ПК могут однажды устареть. Все игры будут в браузере.

Я также очень заинтересован в интеграции всего в browse, пока можно использовать ту же силу, что и любая другая не-браузерная игра.

после небольшого исследования я нашел WebGL, который работает на холсте HTML 5.

теперь есть несколько вопросов,

  1. может ли WebGL использовать ту же силу с ПК, что и продукт без просмотра?

  2. Он полностью основан на шейдерах? или также поддерживает устаревший (я не знаю, если он также устарел в WebGL) фиксированный рендеринг функции? Поскольку я изучаю подход на основе шейдеров, я действительно не хочу возвращаться к конвейеру фиксированных функций.

  3. или мне нужно использовать другую обертку (Copperlich или GLGE) чтобы получить поддержку шейдеров? (хотя ни один из этих движков не имеет поддержки шейдеров).

  4. является ли JavaScript единственным способом взаимодействия с WebGL? Есть ли способ написать приложение WebGL с помощью C/C++/Java?

  5. можно ли интегрировать другое промежуточное ПО с WebGL? (например: пуля, фикс). Нужно ли писать какой-то интерфейс с помощью JS, который соединяется с этой родной liberary?

  6. Java-приложение может быть интегрировано внутри браузера, который имеет интерфейс OpenGl с использованием JOGL или LWJGL. Тогда почему WebGL, когда Java может это сделать?

  7. разве JavaScript не медленный? Это действительно хороший выбор?

  8. можно ли запустить движок, написанный с помощью C / C++, используя OpenGL, в контексте WebGL? Это просто абстрагирование системы рендеринга или это вообще невозможно?

  9. есть ли possibiliry для Microsoft, чтобы придумать WebX (совместимая с DirectX) instread реализации WebGL на IE?

  10. Я думаю, что самой важной частью WebGL будет интеграция по умолчанию с браузером. Таким образом, вам не нужно загружать плагин для игры, например Unity Player для Unity3d или любой другой плагин для конкретного игрового движка. Вы все еще можете играть на любом недавно установленном браузере, если он поддерживает WebGL. Просто откройте страницу и начните играть. Разве не так?

  11. есть ли альтернативный WebGL, который может обеспечить запуск "не требуется установка плагина"?

  12. каковы проблемы стабильности? Поскольку игра будет работать в браузере, ее отзывчивость будет играть решающую роль в стабильности игры. Стоит ли мне беспокоиться об этом? Будет ли браузер узким местом в игре?

  13. каковы (основные) вещи, которые WebGL не поддерживает, что поддерживается OpenGL 3.3 или более поздней версии (я знаю, что WebGL на основе OpenGL ES 2.0). Как я уже говорил ранее, я работаю над собственным игровым движком на основе OpenGL 3.3

вместо того, чтобы Да / нет, некоторые объяснения или веб-ссылки помогут.

3 ответов


но чем больше я исследую, тем больше мне кажется, что офлайн-игры для ПК могут однажды стать устаревшими. Все игры будут в браузере.

и если это произойдет через 15 лет, WebGL или какая-то подобная технология все еще будет там. Не нужно спешить.

после небольшого исследования я нашел WebGL, который работает на холсте HTML 5.

если, конечно, человек не работает Internet Explorer.

ваш вопросы:

1: Что вы подразумеваете под "такие же сильные?"

2: WebGL-это JavaScript-реализация OpenGL ES 2.0. Так что да.

3: см. #2.

4: WebGL является JavaScript реализация OpenGL ES 2.0. Так что это только JavaScript;)

5: WebGL является JavaScript реализация OpenGL ES 2.0. Bullet и такие скомпилированные библиотеки. Если вы не начнете попадать в какой-то браузер надстройки, единственные библиотеки, которые вы можете использовать, - это то, что поставляется с браузером и любой технологией JavaScript, которую вы хотите использовать.

примечание: Я не уверен, что JavaScript смогут напрямую взаимодействовать с надстройками браузера. Если это возможно,это будет через API для браузера. Так что, возможно, это вообще невозможно.

6: потому что Java требует установки Java runtime, которая фактически является надстройкой. JavaScript имеет более прямой доступ к браузеру. Вы можете взаимодействовать с DOM HTML, связь на стороне сервера через JSON или другие механизмы и тому подобное.

7: определите "медленно."Большинство браузеров используют некоторую форму JIT, поэтому она будет работать" достаточно быстро."Будет ли он иметь производительность, которую может иметь родной код? Нет. Но опять же, вы делаете игру, которая будет нуждаться в этой производительности?

8: скажите это со мной сейчас: WebGL-это JavaScript реализация OpenGL ES 2.0. Поэтому нет взаимодействия с кодом C / C++, который не является частью браузера ;)

9: они планируют выставить 3D-рендеринг через Silverlight в ближайшее время. Silverlight, конечно, является дополнением.

10: да.

11: нет. Ничего даже отдаленно кроссплатформенного.

12: это зависит от браузера и драйвера. Реализации WebGL еще молоды, поэтому у них все еще может быть некоторое созревание.

13: Это сложный вопрос. Возможно, вы знаете об этом, но WebGL-это реализация OpenGL ES 2.0 ;) это означает, что он поддерживает то, что делает ES 2.0, наряду с любыми расширениями, которые предоставляет реализация. В отличие от обычных настольных или мобильных реализаций OpenGL, реализация здесь состоит из двух частей: самого браузера и драйвера оборудования.

реализация Google WebGL переводит вызовы OpenGL ES 2.0 WebGL в вызовы Direct3D на настольных компьютерах Windows. Это позволяет им немного стабильности (поскольку драйверы OpenGL, особенно на машинах Linux, слоистый.) Стоимость такова Google теперь решает, какие расширения поддерживать. Реализация WebGL Firefox идет прямо на рабочий стол OpenGL или базовый OpenGL ES 2.0 для мобильных устройств. Это позволяет базовой реализации предоставлять расширения WebGL.

базовый ES 2.0, который является всеми гарантиями WebGL, приблизительно эквивалентен настольному OpenGL 2.0. Так что ничего с рабочего стола GL 3.X. Существует много расширений OpenGL ES, которые предоставляют доступ к дополнительным функциям, но их совокупность не складывается в desktop GL 3.функциональность x-уровня еще.

в конечном счете, WebGL не предназначен для "хардкорных игр". Он, безусловно, может реализовать некоторые, но его основная цель-позволить рисовать 3D-графику. Блистерная скорость и физика высокого класса-это не то, о чем речь.


  1. может ли WebGL использовать ту же силу с ПК, что и продукт без просмотра?

нет, собственные приложения имеют доступ к последним функциям GPU. Приложения WebGL этого не делают.

  1. это полностью шейдер? или также поддерживает устаревший (я не знаю, если он также устарел в WebGL) фиксированный рендеринг функции? Поскольку я изучаю подход на основе шейдеров, я действительно не хочу возвращаться к конвейеру фиксированных функций.

в WebGL нет фиксированной функции. Он основан на OpenGL ES 2.0, который на 100% основан на шейдерах

  1. или мне нужно использовать другую оболочку (Copperlich или GLGE), чтобы получить поддержку шейдеров? (хотя ни один из этих движков не имеет поддержки шейдеров).

нет

  1. является ли JavaScript единственным способом взаимодействия с WebGL? Есть ли способ написать приложение WebGL с помощью C/C++/Java?

можно использовать Emscripten для компиляции C / C++ в asm.js / WebAssembly. Это то, что Unity3D и Unreal делают для поддержки игр в браузере.

  1. можно ли интегрировать другое промежуточное ПО с WebGL? (например: пуля, фикс). Нужно ли писать какой-то интерфейс с помощью JS, который соединяется с этой родной liberary?

используя emscripten, да, вы можете использовать библиотеки C/C++

  1. Java-приложение может быть интегрировано в браузер, который имеет интерфейс OpenGl с помощью JOGL или LWJGL. Тогда почему WebGL, когда Java может это сделать?

Java устарела в браузере. Это небезопасно как плагин и был удален из большинства браузеров.

  1. разве JavaScript не медленный? Это действительно хороший выбор?

Asm.было показано, что js / WebAssembly примерно на 70% быстрее, чем родной (что быстрее, чем Java или C#в среднем) в то же время некоторые функции браузера добавляют определенное количество накладных расходов, которые родное приложение может не иметь. Один пример:<canvas> элемент всегда составляется со страницей, означающей, что есть по крайней мере 1 дополнительный полноэкранный/полный вызов окна браузера.

  1. можно ли запустить движок, написанный с помощью C / C++ с помощью OpenGL, в контексте WebGL? Это просто абстрагирование системы рендеринга или это невозможно в все?

да, снова см. emscripten

  1. есть ли possibiliry для Microsoft, чтобы придумать WebX (совместимая с DirectX) instread реализации WebGL на ИП?

это, конечно, возможно. Никто не может предсказать будущее. Microsoft уже реализовала WebGL в IE11 и Edge.

  1. Я думаю, что наиболее важной частью WebGL будет интеграция по умолчанию с браузер. Таким образом, вам не нужно загружать плагин для игры, например Unity Player для Unity3d или любой другой плагин для конкретного игрового движка. Вы все еще можете играть на любом недавно установленном браузере, если он поддерживает WebGL. Просто откройте страницу и начните играть. Разве не так?

вопросы, которые спрашивают мнения, не поощряются при переполнении стека.

  1. есть ли альтернатива WebGL, которая может предоставить " нет плагина необходима установка " запуск?

в настоящее время не

  1. каковы проблемы стабильности? Поскольку игра будет работать в браузере, ее отзывчивость будет играть решающую роль в стабильности игры. Стоит ли мне беспокоиться об этом? Будет ли браузер узким местом в игре?

нет никакого способа узнать это, кроме как проверить. Chrome и Firefox обновляются каждые 6 недель. Край и Сафари также обновляются несколько раз в год. Их поведение меняется с каждым выпуском. Обычно к лучшему.

  1. каковы (основные) вещи, которые WebGL не поддерживает, что поддерживается OpenGL 3.3 или более поздней версии (я знаю, что WebGL основан на OpenGL ES 2.0). Как я уже говорил ранее, я работаю над собственным игровым движком на основе OpenGL 3.3

этот список слишком длинный, чтобы исследовать.


скорость JavaScript сравнима с Java в настоящее время.

плагины браузера постепенно отключаются. Для некоторых вещей данные могут передаваться и выходить с помощью, например, WebSockets или WebRTC.

для библиотек, таких как Bullet, которым не нужно взаимодействовать с вещами вне браузера, есть Emscripten, который компилирует C++ в asm.js. Можно даже скомпилировать полное приложение C++ на JavaScript, на самом деле это то, что делают UE4 и Unity. Для больших игр/приложений с большим количеством данные я пока не рекомендую, потому что у него есть ограничения памяти в 32-битных браузерах.

по умолчанию все основные браузеры переводят вызовы WebGL в Direct3D в Windows (включая Firefox), поэтому он довольно стабилен.

базовый WebGL сопоставим с OpenGL 2.0, но есть расширения, чтобы принести WebGL 2.0 (OpenGL ES 3.x) функции, такие как WEBGL_draw_buffers (в настоящее время с >55% глобальной поддержки).