Emscripten предоставляет очень мало библиотек. Эти библиотеки являются минимальными, чтобы получить некоторую функциональность OperativeSystem на emscripten C++ код (аудио, вход, видео)
- Libc: стандартная библиотека для C
- LibC++: стандартная библиотеки для C++
- СДЛ: SimpleDirectmediaLayer (СДЛ 1.X проект с открытым исходным кодом кросс-платформенный)
- GLES2: OpenGL ES 2 API
- GLFW: GLFW 2.X
Например, стандартный способ включить OpenGLES2 в Emscripten является:
#include <GLES2/gl2.h>
В то время как включить GLFW:
#include <GL/glfw.h>
Там какая-то дерьмо в этом, потому что если вы хотите использовать более новую версию GLFW, вы просто не можете, потому что Emscripten предоставляет только 1 версию библиотеки, и вы должны придерживаться wi th, что (если Emscripten не сделает обновление для этого, и вы обновите Emscripten).
Вы можете скомпилировать библиотеки для emscripten, только если эти библиотеки могут быть скомпилированы с использованием одной (или нескольких) библиотек, перечисленных выше. (или если вы знаете, как обернуть javascript funciontalities и разоблачить их через интерфейс C)
Также старайтесь избегать использования только шаблонов только при использовании Emscripten, они буквально генерируют много кода раздувания, вы можете легко увеличить размер исполняемого файла несколькими MBs: Это проблема, если вы уже используете Boost или UBLAS.
Поскольку GLFW не одна из библиотек, которые автоматически связаны между собой, вы должны связать его с:
-lglfw
Вы можете найти проект пример OpenGL с использованием Emscripten здесь:
https://github.com/QafooLabs/emscripten-opengl-example
вы можете проверить флаги компоновщика, открыв файл makefile
SDL2 также доступен с '-s USE_SDL = 2' – PeterT
Спасибо за ваш ответ! Это помогло мне разобраться. Тем не менее, мне все еще сложно строить. С помощью команды: em ++ glfw-test.cpp -o glfw-test.html я получаю ошибки вроде: warning: unresolved symbol: glfwCreateWindow. Я чувствую, что мне не хватает чего-то очень простого. – TheRoach
@PeterT, SDL2 теперь должен компилироваться под Emscripten без необходимости использования версии Emscripten. @ TheRoach, вам, конечно же, необходимо связать с библиотекой GLFW '-lglfw' должно быть достаточно – GameDeveloper