Platform Support
Supported and planned target platforms for Nova-3D applications.
Desktop — Linux
Linux is the primary development platform. All examples build and run on Linux with GCC or Clang.
Requirements: GCC 13+ or Clang 16+, CMake 3.21+, SDL3, OpenGL 3.3+
cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug cmake --build build --target Nova3DCube3DDemo ./build/Nova3DCube3DDemo
Desktop — Windows
Windows builds are supported via MinGW-w64 or MSVC. See WINDOWS.md in the repository root for additional notes.
Requirements: MSVC 2022 or MinGW-w64, CMake 3.21+, SDL3, OpenGL
# MinGW-w64 cmake -S . -B build -DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/mingw-w64.cmake cmake --build build # MSVC cmake -S . -B build -G "Visual Studio 17 2022" -A x64 cmake --build build --config Debug
Desktop — macOS
macOS is expected to work with Clang and the same CMake build, but has not been formally tested. Contributions and test reports welcome.
cmake -S . -B build cmake --build build --target Nova3DCube3DDemo
Android
Android build infrastructure is located in the android/ directory. Requires Android Studio, NDK r25+, and Gradle 8+.
See ANDROID.md for step-by-step instructions.
cd android ./gradlew assembleDebug # Install to connected device: adb install app/build/outputs/apk/debug/app-debug.apk
Requirements: Android 7.0+ (API 24), OpenGL ES 3.0
Web — Emscripten / WebAssembly
Web builds via Emscripten are planned. The CMake infrastructure includes early web stubs in cmake/web/. Full WebAssembly support will be added in a future phase.
# When available: source /path/to/emsdk_env.sh emcmake cmake -S . -B build-web -DCMAKE_BUILD_TYPE=Release cmake --build build-web --target Nova3DCube3DDemo
Platform Portability Strategy
Nova-3D achieves portability through its layered architecture:
- SDL3 handles windowing, input, and platform event loops across all platforms
- OpenGL / OpenGL ES / WebGL is abstracted by the EasyGL internal layer
- Platform-specific entry points (Android
ANativeActivity, Emscripten main loop) are handled inside the internal CNA layer - Your application code and the Nova-3D public API are the same across all platforms