Go to file
2024-05-10 21:47:57 -04:00
lib trying some shader stuff, but segfaults 2024-05-10 21:47:57 -04:00
.gitignore Initial commit 2024-05-07 20:10:53 -04:00
build_win32.bat Initial commit 2024-05-07 20:10:53 -04:00
emscripten_browser_file.h Initial commit 2024-05-07 20:10:53 -04:00
example_sdl2_opengl3.vcxproj Initial commit 2024-05-07 20:10:53 -04:00
example_sdl2_opengl3.vcxproj.filters Initial commit 2024-05-07 20:10:53 -04:00
main.cpp trying some shader stuff, but segfaults 2024-05-10 21:47:57 -04:00
Makefile trying some shader stuff, but segfaults 2024-05-10 21:47:57 -04:00
Makefile.emscripten trying some shader stuff, but segfaults 2024-05-10 21:47:57 -04:00
ppdnode trying some shader stuff, but segfaults 2024-05-10 21:47:57 -04:00
README.md Initial commit 2024-05-07 20:10:53 -04:00

How to Build

Windows with Visual Studio's IDE

Use the provided project file (.vcxproj). Add to solution (imgui_examples.sln) if necessary.

Windows with Visual Studio's CLI

Use build_win32.bat or directly:

set SDL2_DIR=path_to_your_sdl2_folder
cl /Zi /MD /utf-8 /I.. /I..\.. /I%SDL2_DIR%\include main.cpp ..\..\backends\imgui_impl_sdl2.cpp ..\..\backends\imgui_impl_opengl3.cpp ..\..\imgui*.cpp /FeDebug/example_sdl2_opengl3.exe /FoDebug/ /link /libpath:%SDL2_DIR%\lib\x86 SDL2.lib SDL2main.lib opengl32.lib /subsystem:console
#                 ^^ include paths                  ^^ source files                                                                                    ^^ output exe                    ^^ output dir   ^^ libraries
# or for 64-bit:
cl /Zi /MD /utf-8 /I.. /I..\.. /I%SDL2_DIR%\include main.cpp ..\..\backends\imgui_impl_sdl2.cpp ..\..\backends\imgui_impl_opengl3.cpp ..\..\imgui*.cpp /FeDebug/example_sdl2_opengl3.exe /FoDebug/ /link /libpath:%SDL2_DIR%\lib\x64 SDL2.lib SDL2main.lib opengl32.lib /subsystem:console

Linux and similar Unixes

Use our Makefile or directly:

c++ `sdl2-config --cflags` -I .. -I ../.. -I ../../backends
  main.cpp ../../backends/imgui_impl_sdl2.cpp ../../backends/imgui_impl_opengl3.cpp ../../imgui*.cpp
  `sdl2-config --libs` -lGL -ldl

macOS

Use our Makefile or directly:

brew install sdl2
c++ `sdl2-config --cflags` -I .. -I ../.. -I ../../backends
  main.cpp ../../backends/imgui_impl_sdl2.cpp ../../backends/imgui_impl_opengl3.cpp ../../imgui*.cpp
  `sdl2-config --libs` -framework OpenGl -framework CoreFoundation

Emscripten

Building

You need to install Emscripten from https://emscripten.org/docs/getting_started/downloads.html, and have the environment variables set, as described in https://emscripten.org/docs/getting_started/downloads.html#installation-instructions

  • Depending on your configuration, in Windows you may need to run emsdk/emsdk_env.bat in your console to access the Emscripten command-line tools.
  • You may also refer to our Continuous Integration setup for Emscripten setup.
  • Then build using make -f Makefile.emscripten while in the current directory.

Running an Emscripten project

To run on a local machine:

  • make -f Makefile.emscripten serve will use Python3 to spawn a local webserver, you can then browse http://localhost:8000 to access your build.
  • Otherwise, generally you will need a local webserver. Quoting https://emscripten.org/docs/getting_started:
    "Unfortunately several browsers (including Chrome, Safari, and Internet Explorer) do not support file:// XHR requests, and cant load extra files needed by the HTML (like a .wasm file, or packaged file data as mentioned lower down). For these browsers youll need to serve the files using a local webserver and then open http://localhost:8000/hello.html."
  • Emscripten SDK has a handy emrun command: emrun web/index.html --browser firefox which will spawn a temporary local webserver (in Firefox). See https://emscripten.org/docs/compiling/Running-html-files-with-emrun.html for details.
  • You may use Python 3 builtin webserver: python -m http.server -d web (this is what make serve uses).
  • You may use Python 2 builtin webserver: cd web && python -m SimpleHTTPServer.
  • If you are accessing the files over a network, certain browsers, such as Firefox, will restrict Gamepad API access to secure contexts only (e.g. https only).