Platforms

Platform Support

Supported and planned target platforms for Nova-3D applications.

Desktop — Linux

✓ Working

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

✓ Working

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

○ Planned

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

⌛ In Progress

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

○ Planned

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
Roadmap → ← Rendering