mirror of
https://github.com/KhronosGroup/Vulkan-Hpp.git
synced 2024-10-14 16:32:17 +00:00
Merge pull request #982 from asuessenbach/actions
Use github actions for CI builds.
This commit is contained in:
commit
f6b2c8e055
@ -1,76 +0,0 @@
|
|||||||
build:
|
|
||||||
verbosity: detailed
|
|
||||||
|
|
||||||
environment:
|
|
||||||
matrix:
|
|
||||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
|
|
||||||
BUILD_TYPE: Debug
|
|
||||||
GENERATOR_ARCH: Win32
|
|
||||||
PYTHON: "C:\\Python38"
|
|
||||||
CXX_STANDARD: 11
|
|
||||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
|
|
||||||
BUILD_TYPE: Debug
|
|
||||||
GENERATOR_ARCH: x64
|
|
||||||
PYTHON: "C:\\Python38-x64"
|
|
||||||
CXX_STANDARD: 11
|
|
||||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
|
||||||
BUILD_TYPE: Debug
|
|
||||||
GENERATOR_ARCH: Win32
|
|
||||||
PYTHON: "C:\\Python38"
|
|
||||||
CXX_STANDARD: 11
|
|
||||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
|
||||||
BUILD_TYPE: Debug
|
|
||||||
GENERATOR_ARCH: x64
|
|
||||||
PYTHON: "C:\\Python38-x64"
|
|
||||||
CXX_STANDARD: 11
|
|
||||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
|
|
||||||
BUILD_TYPE: Debug
|
|
||||||
GENERATOR_ARCH: Win32
|
|
||||||
PYTHON: "C:\\Python38"
|
|
||||||
CXX_STANDARD: 11
|
|
||||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
|
|
||||||
BUILD_TYPE: Debug
|
|
||||||
GENERATOR_ARCH: x64
|
|
||||||
PYTHON: "C:\\Python38-x64"
|
|
||||||
CXX_STANDARD: 11
|
|
||||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
|
|
||||||
BUILD_TYPE: Debug
|
|
||||||
GENERATOR_ARCH: x64
|
|
||||||
PYTHON: "C:\\Python38-x64"
|
|
||||||
CXX_STANDARD: 14
|
|
||||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
|
|
||||||
BUILD_TYPE: Debug
|
|
||||||
GENERATOR_ARCH: x64
|
|
||||||
PYTHON: "C:\\Python38-x64"
|
|
||||||
CXX_STANDARD: 17
|
|
||||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
|
|
||||||
BUILD_TYPE: Debug
|
|
||||||
GENERATOR_ARCH: x64
|
|
||||||
PYTHON: "C:\\Python38-x64"
|
|
||||||
CXX_STANDARD: 20
|
|
||||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
|
|
||||||
BUILD_TYPE: Release
|
|
||||||
GENERATOR_ARCH: x64
|
|
||||||
PYTHON: "C:\\Python38-x64"
|
|
||||||
CXX_STANDARD: 20
|
|
||||||
|
|
||||||
install:
|
|
||||||
- git submodule update --init --recursive
|
|
||||||
- set PATH=%PYTHON%;%PYTHON%\\Scripts;%PATH%
|
|
||||||
|
|
||||||
build_script:
|
|
||||||
- mkdir build
|
|
||||||
- cd build
|
|
||||||
- cmake --version
|
|
||||||
- cmake ..
|
|
||||||
-A %GENERATOR_ARCH%
|
|
||||||
-DSAMPLES_BUILD=ON
|
|
||||||
-DTESTS_BUILD=ON
|
|
||||||
-DSAMPLES_BUILD_ONLY_DYNAMIC=ON
|
|
||||||
-DSAMPLES_BUILD_WITH_LOCAL_VULKAN_HPP=ON
|
|
||||||
-DTESTS_BUILD_ONLY_DYNAMIC=ON
|
|
||||||
-DTESTS_BUILD_WITH_LOCAL_VULKAN_HPP=ON
|
|
||||||
-DVULKAN_HPP_RUN_GENERATOR=ON
|
|
||||||
-DCMAKE_BUILD_TYPE=%BUILD_TYPE%
|
|
||||||
-DCMAKE_CXX_STANDARD=%CXX_STANDARD%
|
|
||||||
- cmake --build . --config %BUILD_TYPE%
|
|
40
.github/workflows/ci-ubuntu.yml
vendored
Normal file
40
.github/workflows/ci-ubuntu.yml
vendored
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
|
||||||
|
name: CI Ubuntu
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
branches: [ master ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
build_type: [Debug, Release]
|
||||||
|
cxx_compiler: [g++-9, g++-10, clang++-10, clang++-11, clang++-12]
|
||||||
|
cxx_standard: [11, 14, 17, 20]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Install libraries
|
||||||
|
run: sudo apt install libgl-dev libxcursor-dev libxi-dev libxinerama-dev libxrandr-dev
|
||||||
|
|
||||||
|
- name: Update Submodules
|
||||||
|
run: git submodule update --init --recursive
|
||||||
|
|
||||||
|
- name: Configure CMake
|
||||||
|
run: cmake -B ${{github.workspace}}/build
|
||||||
|
-DSAMPLES_BUILD=ON
|
||||||
|
-DSAMPLES_BUILD_ONLY_DYNAMIC=ON
|
||||||
|
-DSAMPLES_BUILD_WITH_LOCAL_VULKAN_HPP=ON
|
||||||
|
-DTESTS_BUILD=ON
|
||||||
|
-DTESTS_BUILD_ONLY_DYNAMIC=ON
|
||||||
|
-DTESTS_BUILD_WITH_LOCAL_VULKAN_HPP=ON
|
||||||
|
-DVULKAN_HPP_RUN_GENERATOR=ON
|
||||||
|
-DCMAKE_CXX_COMPILER=${{matrix.cxx_compiler}}
|
||||||
|
-DCMAKE_CXX_STANDARD=${{matrix.cxx_standard}}
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: cmake --build ${{github.workspace}}/build --config ${{matrix.build_type}}
|
37
.github/workflows/ci-windows.yml
vendored
Normal file
37
.github/workflows/ci-windows.yml
vendored
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
|
||||||
|
name: CI Windows
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
branches: [ master ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ${{matrix.os}}
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [windows-latest, windows-2016]
|
||||||
|
architecture: [Win32, x64]
|
||||||
|
build_type: [Debug, Release]
|
||||||
|
cxx_standard: [11, 14, 17, 20]
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Update Submodules
|
||||||
|
run: git submodule update --init --recursive
|
||||||
|
|
||||||
|
- name: Configure CMake
|
||||||
|
run: cmake -B ${{github.workspace}}/build
|
||||||
|
-A ${{matrix.architecture}}
|
||||||
|
-DSAMPLES_BUILD=ON
|
||||||
|
-DSAMPLES_BUILD_ONLY_DYNAMIC=ON
|
||||||
|
-DSAMPLES_BUILD_WITH_LOCAL_VULKAN_HPP=ON
|
||||||
|
-DTESTS_BUILD=ON
|
||||||
|
-DTESTS_BUILD_ONLY_DYNAMIC=ON
|
||||||
|
-DTESTS_BUILD_WITH_LOCAL_VULKAN_HPP=ON
|
||||||
|
-DVULKAN_HPP_RUN_GENERATOR=ON
|
||||||
|
-DCMAKE_CXX_STANDARD=${{matrix.cxx_standard}}
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: cmake --build ${{github.workspace}}/build --config ${{matrix.build_type}}
|
350
.travis.yml
350
.travis.yml
@ -1,350 +0,0 @@
|
|||||||
# Build Configuration for Travis CI
|
|
||||||
# https://travis-ci.org
|
|
||||||
|
|
||||||
dist: bionic
|
|
||||||
language: cpp
|
|
||||||
|
|
||||||
matrix:
|
|
||||||
include:
|
|
||||||
- os: linux
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
sources:
|
|
||||||
- ubuntu-toolchain-r-test
|
|
||||||
packages:
|
|
||||||
- g++-5
|
|
||||||
- ninja-build
|
|
||||||
- xorg-dev
|
|
||||||
- libglu1-mesa-dev
|
|
||||||
env:
|
|
||||||
- MATRIX_EVAL="CC=gcc-5 && CXX=g++-5"
|
|
||||||
- ADDITIONAL_BUILD_OPTIONS="-DSAMPLES_BUILD=OFF"
|
|
||||||
- BUILD_TYPE="Debug"
|
|
||||||
- CXX_STANDARD="11"
|
|
||||||
compiler: g++-5
|
|
||||||
|
|
||||||
- os: linux
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
sources:
|
|
||||||
- ubuntu-toolchain-r-test
|
|
||||||
packages:
|
|
||||||
- g++-6
|
|
||||||
- ninja-build
|
|
||||||
- xorg-dev
|
|
||||||
- libglu1-mesa-dev
|
|
||||||
env:
|
|
||||||
- MATRIX_EVAL="CC=gcc-6 && CXX=g++-6"
|
|
||||||
- BUILD_TYPE="Debug"
|
|
||||||
- CXX_STANDARD="11"
|
|
||||||
compiler: g++-6
|
|
||||||
|
|
||||||
- os: linux
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
sources:
|
|
||||||
- ubuntu-toolchain-r-test
|
|
||||||
packages:
|
|
||||||
- g++-7
|
|
||||||
- ninja-build
|
|
||||||
- xorg-dev
|
|
||||||
- libglu1-mesa-dev
|
|
||||||
env:
|
|
||||||
- MATRIX_EVAL="CC=gcc-7 && CXX=g++-7"
|
|
||||||
- BUILD_TYPE="Debug"
|
|
||||||
- CXX_STANDARD="11"
|
|
||||||
compiler: g++-7
|
|
||||||
|
|
||||||
- os: linux
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
sources:
|
|
||||||
- ubuntu-toolchain-r-test
|
|
||||||
packages:
|
|
||||||
- g++-8
|
|
||||||
- ninja-build
|
|
||||||
- xorg-dev
|
|
||||||
- libglu1-mesa-dev
|
|
||||||
env:
|
|
||||||
- MATRIX_EVAL="CC=gcc-8 && CXX=g++-8"
|
|
||||||
- BUILD_TYPE="Debug"
|
|
||||||
- CXX_STANDARD="11"
|
|
||||||
compiler: g++-8
|
|
||||||
|
|
||||||
- os: linux
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
sources:
|
|
||||||
- ubuntu-toolchain-r-test
|
|
||||||
packages:
|
|
||||||
- g++-9
|
|
||||||
- ninja-build
|
|
||||||
- xorg-dev
|
|
||||||
- libglu1-mesa-dev
|
|
||||||
env:
|
|
||||||
- MATRIX_EVAL="CC=gcc-9 && CXX=g++-9"
|
|
||||||
- BUILD_TYPE="Debug"
|
|
||||||
- CXX_STANDARD="11"
|
|
||||||
compiler: g++-9
|
|
||||||
|
|
||||||
- os: linux
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
sources:
|
|
||||||
- ubuntu-toolchain-r-test
|
|
||||||
packages:
|
|
||||||
- g++-10
|
|
||||||
- ninja-build
|
|
||||||
- xorg-dev
|
|
||||||
- libglu1-mesa-dev
|
|
||||||
env:
|
|
||||||
- MATRIX_EVAL="CC=gcc-10 && CXX=g++-10"
|
|
||||||
- BUILD_TYPE="Debug"
|
|
||||||
- CXX_STANDARD="11"
|
|
||||||
compiler: g++-10
|
|
||||||
|
|
||||||
- os: linux
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
sources:
|
|
||||||
- ubuntu-toolchain-r-test
|
|
||||||
packages:
|
|
||||||
- g++-10
|
|
||||||
- ninja-build
|
|
||||||
- xorg-dev
|
|
||||||
- libglu1-mesa-dev
|
|
||||||
env:
|
|
||||||
- MATRIX_EVAL="CC=gcc-10 && CXX=g++-10"
|
|
||||||
- BUILD_TYPE="Release"
|
|
||||||
- CXX_STANDARD="11"
|
|
||||||
compiler: g++-10
|
|
||||||
|
|
||||||
- os: linux
|
|
||||||
before_install:
|
|
||||||
- sudo apt-get update
|
|
||||||
- sudo apt-get purge g++
|
|
||||||
- sudo apt-get install clang-4.0
|
|
||||||
- CC=clang-4.0 && CXX=clang++-4.0
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
sources:
|
|
||||||
- ubuntu-toolchain-r-test
|
|
||||||
packages:
|
|
||||||
- ninja-build
|
|
||||||
- xorg-dev
|
|
||||||
- libglu1-mesa-dev
|
|
||||||
env:
|
|
||||||
- BUILD_TYPE="Debug"
|
|
||||||
- CXX_STANDARD="11"
|
|
||||||
compiler: clang++-4.0
|
|
||||||
|
|
||||||
- os: linux
|
|
||||||
before_install:
|
|
||||||
- sudo apt-get update
|
|
||||||
- sudo apt-get purge g++
|
|
||||||
- sudo apt-get install clang-5.0
|
|
||||||
- CC=clang-5.0 && CXX=clang++-5.0
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
sources:
|
|
||||||
- ubuntu-toolchain-r-test
|
|
||||||
packages:
|
|
||||||
- ninja-build
|
|
||||||
- xorg-dev
|
|
||||||
- libglu1-mesa-dev
|
|
||||||
env:
|
|
||||||
- BUILD_TYPE="Debug"
|
|
||||||
- CXX_STANDARD="11"
|
|
||||||
compiler: clang++-5.0
|
|
||||||
|
|
||||||
- os: linux
|
|
||||||
before_install:
|
|
||||||
- sudo apt-get update
|
|
||||||
- sudo apt-get purge g++
|
|
||||||
- sudo apt-get install clang-6.0
|
|
||||||
- CC=clang-6.0 && CXX=clang++-6.0
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
sources:
|
|
||||||
- ubuntu-toolchain-r-test
|
|
||||||
packages:
|
|
||||||
- ninja-build
|
|
||||||
- xorg-dev
|
|
||||||
- libglu1-mesa-dev
|
|
||||||
env:
|
|
||||||
- BUILD_TYPE="Debug"
|
|
||||||
- CXX_STANDARD="11"
|
|
||||||
compiler: clang++-6.0
|
|
||||||
|
|
||||||
- os: linux
|
|
||||||
before_install:
|
|
||||||
- sudo apt-get update
|
|
||||||
- sudo apt-get purge g++
|
|
||||||
- sudo apt-get install clang-7
|
|
||||||
- CC=clang-7 && CXX=clang++-7
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
sources:
|
|
||||||
- ubuntu-toolchain-r-test
|
|
||||||
packages:
|
|
||||||
- ninja-build
|
|
||||||
- xorg-dev
|
|
||||||
- libglu1-mesa-dev
|
|
||||||
env:
|
|
||||||
- BUILD_TYPE="Debug"
|
|
||||||
- CXX_STANDARD="11"
|
|
||||||
compiler: clang++-7
|
|
||||||
|
|
||||||
- os: linux
|
|
||||||
before_install:
|
|
||||||
- sudo apt-get update
|
|
||||||
- sudo apt-get purge g++
|
|
||||||
- sudo apt-get install clang-8
|
|
||||||
- CC=clang-8 && CXX=clang++-8
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
sources:
|
|
||||||
- ubuntu-toolchain-r-test
|
|
||||||
packages:
|
|
||||||
- ninja-build
|
|
||||||
- xorg-dev
|
|
||||||
- libglu1-mesa-dev
|
|
||||||
env:
|
|
||||||
- BUILD_TYPE="Debug"
|
|
||||||
- CXX_STANDARD="11"
|
|
||||||
compiler: clang++-8
|
|
||||||
|
|
||||||
- os: linux
|
|
||||||
before_install:
|
|
||||||
- sudo apt-get update
|
|
||||||
- sudo apt-get purge g++
|
|
||||||
- sudo apt-get install clang-9
|
|
||||||
- CC=clang-9 && CXX=clang++-9
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
sources:
|
|
||||||
- ubuntu-toolchain-r-test
|
|
||||||
packages:
|
|
||||||
- ninja-build
|
|
||||||
- xorg-dev
|
|
||||||
- libglu1-mesa-dev
|
|
||||||
env:
|
|
||||||
- BUILD_TYPE="Debug"
|
|
||||||
- CXX_STANDARD="11"
|
|
||||||
compiler: clang++-9
|
|
||||||
|
|
||||||
- os: linux
|
|
||||||
before_install:
|
|
||||||
- sudo apt-get update
|
|
||||||
- sudo apt-get purge g++
|
|
||||||
- sudo apt-get install clang-10
|
|
||||||
- CC=clang-10 && CXX=clang++-10
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
sources:
|
|
||||||
- ubuntu-toolchain-r-test
|
|
||||||
packages:
|
|
||||||
- ninja-build
|
|
||||||
- xorg-dev
|
|
||||||
- libglu1-mesa-dev
|
|
||||||
env:
|
|
||||||
- BUILD_TYPE="Debug"
|
|
||||||
- CXX_STANDARD="11"
|
|
||||||
compiler: clang++-10
|
|
||||||
|
|
||||||
- os: linux
|
|
||||||
before_install:
|
|
||||||
- sudo apt-get update
|
|
||||||
- sudo apt-get purge g++
|
|
||||||
- sudo apt-get install clang-10
|
|
||||||
- CC=clang-10 && CXX=clang++-10
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
sources:
|
|
||||||
- ubuntu-toolchain-r-test
|
|
||||||
packages:
|
|
||||||
- ninja-build
|
|
||||||
- xorg-dev
|
|
||||||
- libglu1-mesa-dev
|
|
||||||
env:
|
|
||||||
- BUILD_TYPE="Debug"
|
|
||||||
- CXX_STANDARD="14"
|
|
||||||
compiler: clang++-10
|
|
||||||
|
|
||||||
- os: linux
|
|
||||||
before_install:
|
|
||||||
- sudo apt-get update
|
|
||||||
- sudo apt-get purge g++
|
|
||||||
- sudo apt-get install clang-10
|
|
||||||
- CC=clang-10 && CXX=clang++-10
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
sources:
|
|
||||||
- ubuntu-toolchain-r-test
|
|
||||||
packages:
|
|
||||||
- ninja-build
|
|
||||||
- xorg-dev
|
|
||||||
- libglu1-mesa-dev
|
|
||||||
env:
|
|
||||||
- BUILD_TYPE="Debug"
|
|
||||||
- CXX_STANDARD="17"
|
|
||||||
compiler: clang++-10
|
|
||||||
|
|
||||||
- os: linux
|
|
||||||
before_install:
|
|
||||||
- sudo apt-get update
|
|
||||||
- sudo apt-get purge g++
|
|
||||||
- sudo apt-get install clang-10
|
|
||||||
- CC=clang-10 && CXX=clang++-10
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
sources:
|
|
||||||
- ubuntu-toolchain-r-test
|
|
||||||
packages:
|
|
||||||
- ninja-build
|
|
||||||
- xorg-dev
|
|
||||||
- libglu1-mesa-dev
|
|
||||||
env:
|
|
||||||
- BUILD_TYPE="Debug"
|
|
||||||
- CXX_STANDARD="20"
|
|
||||||
compiler: clang++-10
|
|
||||||
|
|
||||||
- os: linux
|
|
||||||
before_install:
|
|
||||||
- sudo apt-get update
|
|
||||||
- sudo apt-get purge g++
|
|
||||||
- sudo apt-get install clang-10
|
|
||||||
- CC=clang-10 && CXX=clang++-10
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
sources:
|
|
||||||
- ubuntu-toolchain-r-test
|
|
||||||
packages:
|
|
||||||
- ninja-build
|
|
||||||
- xorg-dev
|
|
||||||
- libglu1-mesa-dev
|
|
||||||
env:
|
|
||||||
- BUILD_TYPE="Release"
|
|
||||||
- CXX_STANDARD="20"
|
|
||||||
compiler: clang++-10
|
|
||||||
|
|
||||||
before_install:
|
|
||||||
- eval "${MATRIX_EVAL}"
|
|
||||||
|
|
||||||
script:
|
|
||||||
- mkdir build
|
|
||||||
- cd build
|
|
||||||
- cmake --version
|
|
||||||
- cmake -GNinja ..
|
|
||||||
-DSAMPLES_BUILD=ON
|
|
||||||
-DTESTS_BUILD=ON
|
|
||||||
-DSAMPLES_BUILD_ONLY_DYNAMIC=ON
|
|
||||||
-DSAMPLES_BUILD_WITH_LOCAL_VULKAN_HPP=ON
|
|
||||||
-DTESTS_BUILD_ONLY_DYNAMIC=ON
|
|
||||||
-DTESTS_BUILD_WITH_LOCAL_VULKAN_HPP=ON
|
|
||||||
-DCMAKE_BUILD_TYPE=%BUILD_TYPE%
|
|
||||||
-DCMAKE_CXX_FLAGS="-Wall -Wpedantic -Wextra"
|
|
||||||
-DCMAKE_CXX_STANDARD=$CXX_STANDARD
|
|
||||||
$ADDITIONAL_BUILD_OPTIONS
|
|
||||||
- cmake --build .
|
|
||||||
- ./VulkanHppGenerator
|
|
@ -18,12 +18,25 @@
|
|||||||
#if defined( _MSC_VER )
|
#if defined( _MSC_VER )
|
||||||
# pragma warning( push )
|
# pragma warning( push )
|
||||||
# pragma warning( disable : 4127 ) // conditional expression is constant (glm)
|
# pragma warning( disable : 4127 ) // conditional expression is constant (glm)
|
||||||
|
#elif defined( __clang__ )
|
||||||
|
// no need to ignore any warnings with clang
|
||||||
|
#elif defined( __GNUC__ )
|
||||||
|
# if ( 10 <= __GNUC__ ) && ( 201703L < __cplusplus )
|
||||||
|
# pragma GCC diagnostic push
|
||||||
|
# pragma GCC diagnostic ignored "-Wvolatile"
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <glm/glm.hpp>
|
#include <glm/glm.hpp>
|
||||||
|
|
||||||
#if defined( _MSC_VER )
|
#if defined( _MSC_VER )
|
||||||
# pragma warning( pop )
|
# pragma warning( pop )
|
||||||
|
#elif defined( __clang__ )
|
||||||
|
// no need to ignore any warnings with clang
|
||||||
|
#elif defined( __GNUC__ )
|
||||||
|
# if ( 10 <= __GNUC__ ) && ( 201703L < __cplusplus )
|
||||||
|
# pragma GCC diagnostic pop
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <vulkan/vulkan.hpp>
|
#include <vulkan/vulkan.hpp>
|
||||||
|
@ -18,12 +18,25 @@
|
|||||||
#if defined( _MSC_VER )
|
#if defined( _MSC_VER )
|
||||||
# pragma warning( push )
|
# pragma warning( push )
|
||||||
# pragma warning( disable : 4127 ) // conditional expression is constant (glm)
|
# pragma warning( disable : 4127 ) // conditional expression is constant (glm)
|
||||||
|
#elif defined( __clang__ )
|
||||||
|
// no need to ignore any warnings with clang
|
||||||
|
#elif defined( __GNUC__ )
|
||||||
|
# if ( 10 <= __GNUC__ ) && ( 201703L < __cplusplus )
|
||||||
|
# pragma GCC diagnostic push
|
||||||
|
# pragma GCC diagnostic ignored "-Wvolatile"
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <glm/glm.hpp>
|
#include <glm/glm.hpp>
|
||||||
|
|
||||||
#if defined( _MSC_VER )
|
#if defined( _MSC_VER )
|
||||||
# pragma warning( pop )
|
# pragma warning( pop )
|
||||||
|
#elif defined( __clang__ )
|
||||||
|
// no need to ignore any warnings with clang
|
||||||
|
#elif defined( __GNUC__ )
|
||||||
|
# if ( 10 <= __GNUC__ ) && ( 201703L < __cplusplus )
|
||||||
|
# pragma GCC diagnostic pop
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <vulkan/vulkan.hpp>
|
#include <vulkan/vulkan.hpp>
|
||||||
@ -34,56 +47,80 @@ namespace vk
|
|||||||
{
|
{
|
||||||
class CameraManipulator
|
class CameraManipulator
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
enum class Action { None, Orbit, Dolly, Pan, LookAround };
|
enum class Action
|
||||||
enum class Mode { Examine, Fly, Walk, Trackball };
|
{
|
||||||
enum class MouseButton { None, Left, Middle, Right };
|
None,
|
||||||
enum class ModifierFlagBits : uint32_t { Shift = 1, Ctrl = 2, Alt = 4 };
|
Orbit,
|
||||||
using ModifierFlags = vk::Flags<ModifierFlagBits>;
|
Dolly,
|
||||||
|
Pan,
|
||||||
|
LookAround
|
||||||
|
};
|
||||||
|
enum class Mode
|
||||||
|
{
|
||||||
|
Examine,
|
||||||
|
Fly,
|
||||||
|
Walk,
|
||||||
|
Trackball
|
||||||
|
};
|
||||||
|
enum class MouseButton
|
||||||
|
{
|
||||||
|
None,
|
||||||
|
Left,
|
||||||
|
Middle,
|
||||||
|
Right
|
||||||
|
};
|
||||||
|
enum class ModifierFlagBits : uint32_t
|
||||||
|
{
|
||||||
|
Shift = 1,
|
||||||
|
Ctrl = 2,
|
||||||
|
Alt = 4
|
||||||
|
};
|
||||||
|
using ModifierFlags = vk::Flags<ModifierFlagBits>;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CameraManipulator();
|
CameraManipulator();
|
||||||
|
|
||||||
glm::vec3 const& getCameraPosition() const;
|
glm::vec3 const & getCameraPosition() const;
|
||||||
glm::vec3 const& getCenterPosition() const;
|
glm::vec3 const & getCenterPosition() const;
|
||||||
glm::mat4 const& getMatrix() const;
|
glm::mat4 const & getMatrix() const;
|
||||||
Mode getMode() const;
|
Mode getMode() const;
|
||||||
glm::ivec2 const& getMousePosition() const;
|
glm::ivec2 const & getMousePosition() const;
|
||||||
float getRoll() const;
|
float getRoll() const;
|
||||||
float getSpeed() const;
|
float getSpeed() const;
|
||||||
glm::vec3 const& getUpVector() const;
|
glm::vec3 const & getUpVector() const;
|
||||||
glm::u32vec2 const& getWindowSize() const;
|
glm::u32vec2 const & getWindowSize() const;
|
||||||
Action mouseMove(glm::ivec2 const& position, MouseButton mouseButton, ModifierFlags & modifiers);
|
Action mouseMove( glm::ivec2 const & position, MouseButton mouseButton, ModifierFlags & modifiers );
|
||||||
void setLookat(const glm::vec3& cameraPosition, const glm::vec3& centerPosition, const glm::vec3& upVector);
|
void setLookat( const glm::vec3 & cameraPosition, const glm::vec3 & centerPosition, const glm::vec3 & upVector );
|
||||||
void setMode(Mode mode);
|
void setMode( Mode mode );
|
||||||
void setMousePosition(glm::ivec2 const& position);
|
void setMousePosition( glm::ivec2 const & position );
|
||||||
void setRoll(float roll); // roll in radians
|
void setRoll( float roll ); // roll in radians
|
||||||
void setSpeed(float speed);
|
void setSpeed( float speed );
|
||||||
void setWindowSize(glm::ivec2 const& size);
|
void setWindowSize( glm::ivec2 const & size );
|
||||||
void wheel(int value);
|
void wheel( int value );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void dolly(glm::vec2 const& delta);
|
void dolly( glm::vec2 const & delta );
|
||||||
void motion(glm::ivec2 const& position, Action action = Action::None);
|
void motion( glm::ivec2 const & position, Action action = Action::None );
|
||||||
void orbit(glm::vec2 const& delta, bool invert = false);
|
void orbit( glm::vec2 const & delta, bool invert = false );
|
||||||
void pan(glm::vec2 const& delta);
|
void pan( glm::vec2 const & delta );
|
||||||
double projectOntoTBSphere(const glm::vec2& p);
|
double projectOntoTBSphere( const glm::vec2 & p );
|
||||||
void trackball(glm::ivec2 const& position);
|
void trackball( glm::ivec2 const & position );
|
||||||
void update();
|
void update();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
glm::vec3 m_cameraPosition = glm::vec3(10, 10, 10);
|
glm::vec3 m_cameraPosition = glm::vec3( 10, 10, 10 );
|
||||||
glm::vec3 m_centerPosition = glm::vec3(0, 0, 0);
|
glm::vec3 m_centerPosition = glm::vec3( 0, 0, 0 );
|
||||||
glm::vec3 m_upVector = glm::vec3(0, 1, 0);
|
glm::vec3 m_upVector = glm::vec3( 0, 1, 0 );
|
||||||
float m_roll = 0; // Rotation around the Z axis in RAD
|
float m_roll = 0; // Rotation around the Z axis in RAD
|
||||||
glm::mat4 m_matrix = glm::mat4(1);
|
glm::mat4 m_matrix = glm::mat4( 1 );
|
||||||
|
|
||||||
glm::u32vec2 m_windowSize = glm::u32vec2(1, 1);
|
glm::u32vec2 m_windowSize = glm::u32vec2( 1, 1 );
|
||||||
|
|
||||||
float m_speed = 30.0f;
|
float m_speed = 30.0f;
|
||||||
glm::ivec2 m_mousePosition = glm::ivec2(0, 0);
|
glm::ivec2 m_mousePosition = glm::ivec2( 0, 0 );
|
||||||
|
|
||||||
Mode m_mode = Mode::Examine;
|
Mode m_mode = Mode::Examine;
|
||||||
};
|
};
|
||||||
} // namespace su
|
} // namespace su
|
||||||
} // namespace vk
|
} // namespace vk
|
||||||
|
Loading…
Reference in New Issue
Block a user