Commit 75a21557 authored by Cyprien Plateau--Holleville's avatar Cyprien Plateau--Holleville
Browse files

First commit

parents
AccessModifierOffset: -2
AlignAfterOpenBracket: Align
AlignConsecutiveAssignments: true
AlignConsecutiveDeclarations: true
AlignEscapedNewlines: Left
AlignOperands: true
AlignTrailingComments: true
AllowAllParametersOfDeclarationOnNextLine: false
AllowShortBlocksOnASingleLine: true
AllowShortCaseLabelsOnASingleLine: true
AllowShortFunctionsOnASingleLine: true
AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: true
AlwaysBreakTemplateDeclarations: Yes
BinPackArguments: false
BinPackParameters: false
BraceWrapping:
AfterClass: true
AfterControlStatement: true
AfterEnum: true
AfterFunction: true
AfterNamespace: true
AfterStruct: true
AfterUnion: true
AfterExternBlock: true
BeforeCatch: true
BeforeElse: true
IndentBraces: true
SplitEmptyFunction: false
SplitEmptyRecord: false
SplitEmptyNamespace: false
BreakBeforeBinaryOperators: All
BreakBeforeBraces: Allman
BreakBeforeTernaryOperators: true
BreakConstructorInitializers: AfterColon
BreakInheritanceList: AfterColon
BreakStringLiterals: true
ColumnLimit: 120
CommentPragmas: ''
CompactNamespaces: false
ConstructorInitializerAllOnOneLineOrOnePerLine: false
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: false
DerivePointerAlignment: false
DisableFormat: false
ExperimentalAutoDetectBinPacking: false
FixNamespaceComments: true
IncludeBlocks: Merge
IndentCaseLabels: false
IndentWidth: 4
IndentWrappedFunctionNames: false
KeepEmptyLinesAtTheStartOfBlocks: false
Language: Cpp
MaxEmptyLinesToKeep: 1
NamespaceIndentation: All
PenaltyBreakBeforeFirstCallParameter: 1
PenaltyBreakComment: 300
PenaltyBreakString: 1000
PenaltyBreakFirstLessLess: 120
PenaltyReturnTypeOnItsOwnLine: 1000
PointerAlignment: Middle
ReflowComments: true
SortIncludes: true
SortUsingDeclarations: true
SpaceAfterCStyleCast: false
SpaceAfterTemplateKeyword: false
SpaceBeforeAssignmentOperators: true
SpaceBeforeCpp11BracedList: true
SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
SpaceBeforeParens: ControlStatements
SpaceBeforeRangeBasedForLoopColon: true
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: false
SpacesInCStyleCastParentheses: false
SpacesInContainerLiterals: true
SpacesInParentheses: true
SpacesInSquareBrackets: true
Standard: Cpp11
TabWidth: 4
UseTab: Never
.vs
out/*
build/*
enc_temp_folder/*
CMakeSettings.json
/CPTCMakeBuild/CMakeFiles
*.bak
\ No newline at end of file
[submodule "extern/fmt"]
path = extern/fmt
url = https://github.com/fmtlib/fmt.git
[submodule "extern/glm"]
path = extern/glm
url = https://github.com/g-truc/glm.git
[submodule "extern/SDL2"]
path = extern/SDL2
url = https://github.com/libsdl-org/SDL.git
[submodule "extern/MarchingCubeCpp"]
path = extern/MarchingCubeCpp
url = https://github.com/aparis69/MarchingCubeCpp.git
[submodule "extern/bullet3"]
path = extern/bullet3
url = https://github.com/bulletphysics/bullet3.git
[submodule "extern/portable-file-dialogs"]
path = extern/portable-file-dialogs
url = https://github.com/samhocevar/portable-file-dialogs.git
[submodule "extern/imgui"]
path = extern/imgui
url = https://github.com/ocornut/imgui.git
[submodule "extern/stb"]
path = extern/stb
url = https://github.com/nothings/stb.git
[submodule "extern/chemfiles"]
path = extern/chemfiles
url = https://github.com/sacraiou/chemfiles.git
[submodule "extern/entt"]
path = extern/entt
url = https://github.com/skypjack/entt.git
[submodule "extern/tinyobjloader"]
path = extern/tinyobjloader
url = https://github.com/tinyobjloader/tinyobjloader.git
[submodule "extern/GSL"]
path = extern/GSL
url = https://github.com/microsoft/GSL
cmake_minimum_required (VERSION 3.8)
project ("Udock")
option(UDOCK_WITH_OPENGL "Build with OpenGL Renderer" ON)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
add_subdirectory(extern)
# Based on https://github.com/lefticus/cppbestpractices/blob/master/02-Use_the_Tools_Available.md
if (NOT MSVC)
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
set(UDOCK_COMPILATION_FLAGS
-Wall
-Wfatal-errors
-Wextra
-Wshadow
-pedantic
-Wnon-virtual-dtor
-Wold-style-cast
-Wcast-align
-Wunused
-Woverloaded-virtual
-Wpedantic
-Wconversion
-Wsign-conversion
-Wmisleading-indentation
-Wduplicated-cond
-Wduplicated-branches
-Wlogical-op
-Wnull-dereference
-Wuseless-cast
-Wdouble-promotion
-Wformat=2)
else()
set(UDOCK_COMPILATION_FLAGS
-DNDEBUG
-Wfatal-errors
-Wall
-Wextra
-Wshadow
-pedantic
-Wnon-virtual-dtor
-Wold-style-cast
-Wcast-align
-Wunused
-Woverloaded-virtual
-Wpedantic
-Wconversion
-Wsign-conversion
-Wmisleading-indentation
-Wduplicated-cond
-Wduplicated-branches
-Wlogical-op
-Wnull-dereference
-Wuseless-cast
-Wdouble-promotion
-Wformat=2)
endif()
elseif (MSVC)
set(UDOCK_COMPILATION_FLAGS
/permissive
/w14242
/w14254
/w14263
/w14265
/w14287
/we4289
/w14296
/w14311
/w14545
/w14546
/w14547
/w14549
/w14555
/w14619
/w14640
/w14826
/w14928
/fp:fast)
set(UDOCK_COMPILE_DEFINITIONS NOMINMAX USE_MATH_DEFINES )
endif ()
set(UDOCK_HEADERS
"include/Udock/Settings.hpp"
"include/Udock/Udock.hpp"
"include/Udock/Window.hpp"
"include/Udock/Core/Types.hpp"
"include/Udock/Data/Atom.hpp"
"include/Udock/System/Camera.hpp"
"include/Udock/Data/Molecule.hpp"
"include/Udock/Data/MolecularSurface.hpp"
"include/Udock/Renderer/Buffer.hpp"
"include/Udock/Renderer/FrameBuffer.hpp"
"include/Udock/Renderer/Program.hpp"
"include/Udock/Renderer/Renderer.hpp"
"include/Udock/Renderer/Texture.hpp"
"include/Udock/Renderer/Ui.hpp"
"include/Udock/Renderer/Pass/GeometryPass.hpp"
"include/Udock/Renderer/Pass/GeometryHandler.hpp"
"include/Udock/Renderer/Pass/ShadingPass.hpp"
"include/Udock/Renderer/Pass/BakedSkybox.hpp"
"include/Udock/Renderer/Pass/HosekSkybox.hpp"
"include/Udock/Renderer/Pass/Skybox.hpp"
"include/Udock/Physics/Constraint.hpp"
"include/Udock/Physics/Energy.hpp"
"include/Udock/Physics/RigidBody.hpp"
"include/Udock/Physics/PhysicalWorld.hpp"
"include/Udock/Physics/Projectile.hpp"
"include/Udock/System/Listener.hpp"
"include/Udock/System/System.hpp"
"include/Udock/System/Transform.hpp"
"include/Udock/Ui/UiInput.hpp"
"include/Udock/Ui/Component/Component.hpp"
"include/Udock/Ui/Component/Menu.hpp"
"include/Udock/Ui/Component/UiManager.hpp"
"include/Udock/Ui/Component/FloatingWindow.hpp"
"include/Udock/Ui/Component/WindowComponent.hpp"
"include/Udock/Ui/Controller/CameraController.hpp"
"include/Udock/Ui/Controller/DockingController.hpp"
"include/Udock/Ui/Controller/KeyController.hpp"
"include/Udock/Ui/Controller/SpaceshipController.hpp"
"include/Udock/Ui/State/State.hpp"
"include/Udock/Ui/Window/EnergyWindow.hpp"
"include/Udock/Ui/Window/InformationWindow.hpp"
"include/Udock/Ui/Window/SettingsWindow.hpp"
"include/Udock/Utils/AccelerationStructure.hpp"
"include/Udock/Utils/Chrono.hpp"
"include/Udock/Utils/Logger.hpp"
"include/Udock/Utils/Io.hpp"
)
set(UDOCK_SRC
"src/main.cpp"
"src/Settings.cpp"
"src/Udock.cpp"
"src/Window.cpp"
"src/Data/Mesh.cpp"
"src/Data/Molecule.cpp"
"src/Data/MolecularSurface.cpp"
"src/Renderer/GL/UniformManager.cpp"
"src/Physics/Constraint.cpp"
"src/Physics/Energy.cpp"
"src/Physics/RigidBody.cpp"
"src/Physics/PhysicalWorld.cpp"
"src/Physics/Projectile.cpp"
"src/System/Camera.cpp"
"src/System/System.cpp"
"src/System/Transform.cpp"
"src/Ui/Component/Component.cpp"
"src/Ui/Component/Menu.cpp"
"src/Ui/Component/UiManager.cpp"
"src/Ui/Component/FloatingWindow.cpp"
"src/Ui/Component/WindowComponent.cpp"
"src/Ui/Controller/CameraController.cpp"
"src/Ui/Controller/DockingController.cpp"
"src/Ui/Controller/KeyController.cpp"
"src/Ui/Controller/SpaceshipController.cpp"
"src/Ui/State/Docking.cpp"
"src/Ui/State/Spaceship.cpp"
"src/Ui/State/State.cpp"
"src/Ui/Window/EnergyWindow.cpp"
"src/Ui/Window/InformationWindow.cpp"
"src/Ui/Window/SettingsWindow.cpp"
"src/Utils/AccelerationStructure.cpp"
"src/Utils/Logger.cpp"
"src/Utils/Io.cpp"
)
if(${UDOCK_WITH_OPENGL})
set(UDOCK_SRC
${UDOCK_SRC}
"src/Renderer/GL/Buffer.cpp"
"src/Renderer/GL/FrameBuffer.cpp"
"src/Renderer/GL/Program.cpp"
"src/Renderer/GL/Renderer.cpp"
"src/Renderer/GL/Texture.cpp"
"src/Renderer/GL/Ui.cpp"
"src/Renderer/GL/Pass/GeometryPass.cpp"
"src/Renderer/GL/Pass/GeometryHandler.cpp"
"src/Renderer/GL/Pass/ShadingPass.cpp"
"src/Renderer/GL/Pass/BakedSkybox.cpp"
"src/Renderer/GL/Pass/HosekSkybox.cpp"
"src/Renderer/GL/Pass/HosekSkyboxWeights.cpp"
"src/Renderer/GL/Pass/Skybox.cpp"
)
set(UDOCK_COMPILE_DEFINITIONS
${UDOCK_COMPILE_DEFINITIONS}
UDOCK_RENDERER_OPENGL
)
else()
message( FATAL_ERROR "Other renderer than OpenGL are currently not supported." )
endif()
add_executable (${PROJECT_NAME} ${UDOCK_HEADERS} ${UDOCK_SRC} ${UDK_EXTERN_SOURCES})
target_link_libraries(${PROJECT_NAME} PRIVATE
${UDK_EXTERN_LIBRARIES}
)
target_compile_definitions(${PROJECT_NAME} PRIVATE ${UDOCK_COMPILE_DEFINITIONS})
target_compile_options( ${PROJECT_NAME} PRIVATE ${UDOCK_COMPILATION_FLAGS})
target_include_directories(${PROJECT_NAME} PRIVATE
"include/"
${UDK_EXTERN_INCLUDES}
)
file(GLOB_RECURSE SHADERS shaders/*.vert shaders/*.frag shaders/*.geom shaders/*.tesc shaders/*.tese shaders/*.comp)
add_custom_target(UDOCK_SHADERS COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/shaders/ ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/shaders/)
set_property(TARGET UDOCK_SHADERS APPEND PROPERTY SOURCES ${SHADERS})
add_dependencies(${PROJECT_NAME} UDOCK_SHADERS)
file(GLOB_RECURSE SAMPLES samples/*.*)
add_custom_target(UDOCK_SAMPLES COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/samples/ ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/samples/)
set_property(TARGET UDOCK_SAMPLES APPEND PROPERTY SOURCES ${SAMPLES})
add_dependencies(${PROJECT_NAME} UDOCK_SAMPLES)
file(GLOB_RECURSE RESOURCES resources/*.*)
add_custom_target(UDOCK_RESOURCES COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/resources/ ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/resources/)
set_property(TARGET UDOCK_RESOURCES APPEND PROPERTY SOURCES ${RESOURCES})
add_dependencies(${PROJECT_NAME} UDOCK_RESOURCES)
# How to use Udock
Two scenes are available:
The first one, the Docking scene, aims to offer a user-friendly way of calculating molecules
positions based on energy computation. This is made possible thanks to the anchors and line
constraints that the user can create by clicking on two different molecules and pressing left
control in the same time. Those constraints can be applied to start energy computation when
molecule are closer.
The Spaceship scene aims to deliver a gamification of the molecular exploration. The spaceship
can be controlled by a game controller and throw projectiles. The latter aims to move molecule
with the Collision tool and to add anchors on molecule with the Anchor tool.
## Controls
The following controls are given for a QWERTY layout.
- Change scene: Tab
__Docking Scene__ (Default)
- Camera:
- Camera orientation: Mouse Right click
- Camera rotate around: Mouse right click + left shift
- Center on molecule: Mouse left double click on molecule
- Front: W
- Left: A
- Back: S
- Right: D
- Molecule:
- Rotate: Drag with mouse left click
- Constraints
- Apply scene constraint: Space
- Add new anchor: Left control + left click on molecule
- Add new line constraint: Add anchors on two different molecule
__Spaceship Scene__
- Camera:
- Orientation: Mouse right click / Game controller left and right stick
- Front: W / Game controller right shoulder
- Left: A
- Back: S / Game controller right shoulder
- Right: D
- Spaceship:
- Fire ball: A / Left Click / Game controller A
- Change tool: 1 (Collision tool) / 2 (Anchor tool) / Game Controller B (Switch)
- Constraints:
- Apply scene constraint: Space / Game controller X
<h1 align="center">Udock</h1>
![Logo](readme/Banner2.png)
If you need help to use this software, please refer to the [__Guide__](Guide.md).
## Install
To clone the project and its dependencies:
```
git clone --recurse-submodules -j8 https://gitlab.com/Udock/Udock2
```
The project is using CMake, to build it you may use the following command or your favorite IDE:
```
cd Udock
mkdir build && cd build
cmake ..
cmake --build . --target Udock --config Release
```
The project has been tested on Windows 10 (VS2019) and Linux (g++-9/11).
## Acknowledgement
The following resources have been used for the development of this project:
- [Cubemaps](https://learnopengl.com/Advanced-OpenGL/Cubemaps) and [Diffuse irradiance](https://learnopengl.com/PBR/IBL/Diffuse-irradiance)
chapter of LearnOpengl [Joey de Vries](https://twitter.com/JoeyDeVriez) licensed under the terms of
the [CC BY-NC 4.0 license](https://creativecommons.org/licenses/by-nc/4.0/).
- [Raptor Spaceship Low Poly](https://skfb.ly/osJ6J) by Noddity is licensed under the terms of the [CC BY 4.0 license](http://creativecommons.org/licenses/by/4.0/) and
converted in OBJ with Blender.
- [Milky Way HDRI file](http://www.hdrlabs.com/sibl/archive.html) by HDRlabs is licensed under the terms of the [CC BY-NC-SA 3.0 license](https://creativecommons.org/licenses/by-nc-sa/3.0/)
and converted in cubemap with [HDRI-to-CubeMap](https://matheowis.github.io/HDRI-to-CubeMap/) by Mateusz Wisniowski.
This project would also not have been made without the help of the following libraries:
- [Bullet Physics SDK](https://github.com/bulletphysics/bullet3)
- [Chemfiles: a library for reading and writing chemistry files](https://github.com/sacraiou/chemfiles)
- [entt](https://github.com/skypjack/entt)
- [fmt](https://github.com/fmtlib/fmt)
- [gl3w: Simple OpenGL core profile loading](https://github.com/skaslev/gl3w)
- [glm](https://github.com/g-truc/glm)
- [Guidelines Support Library (GSL)](https://github.com/microsoft/GSL)
- [Dear ImGui](https://github.com/ocornut/imgui)
- [Marching Cube C++](https://github.com/aparis69/MarchingCubeCpp)
- [Portable File Dialogs](https://github.com/samhocevar/portable-file-dialogs)
- [Simple DirectMedia Layer (SDL) Version 2.0](https://github.com/libsdl-org/SDL)
- [stb](https://github.com/nothings/stb)
- [tinyobjloader](https://github.com/tinyobjloader/tinyobjloader)
# Load libraries
option(SDL2_DISABLE_UNINSTALL "" ON ) # Name clash with chemfiles
add_subdirectory(SDL2)
add_subdirectory(entt)
add_subdirectory(chemfiles)
# since chemfiles uses fmt this avoid to get the target multiples times
if(NOT TARGET fmt)
add_subdirectory(extern/fmt)
endif()
add_subdirectory(glm)
option(BUILD_UNIT_TESTS "" OFF )
option(BUILD_BULLET2_DEMOS "" OFF )
option(BUILD_ENET "" OFF )
option(BUILD_CLSOCKET "" OFF )
option(BUILD_CPU_DEMOS "" OFF )
option(USE_MSVC_RUNTIME_LIBRARY_DLL "" ON )
add_subdirectory(bullet3)
set(IMGUI_PATH "${CMAKE_CURRENT_SOURCE_DIR}/imgui")
set(IMGUI_SOURCES
"${IMGUI_PATH}/imconfig.h"
"${IMGUI_PATH}/imgui.cpp"
"${IMGUI_PATH}/imgui.h"
"${IMGUI_PATH}/imgui_demo.cpp"
"${IMGUI_PATH}/imgui_draw.cpp"
"${IMGUI_PATH}/imgui_internal.h"
"${IMGUI_PATH}/imgui_tables.cpp"
"${IMGUI_PATH}/imgui_widgets.cpp"
"${IMGUI_PATH}/backends/imgui_impl_sdl.cpp"
"${IMGUI_PATH}/backends/imgui_impl_sdl.h"
"${IMGUI_PATH}/backends/imgui_impl_opengl3.cpp"
"${IMGUI_PATH}/backends/imgui_impl_opengl3.h"
)
if(${UDOCK_WITH_OPENGL})
set(GL3W_PATH "${CMAKE_CURRENT_SOURCE_DIR}/gl3w")
file(GLOB_RECURSE GL3W_SOURCES ${GL3W_PATH}/*.hpp ${GL3W_PATH}/*.h ${GL3W_PATH}/*.inl ${GL3W_PATH}/*.c ${GL3W_PATH}/*.cpp)
set(IMGUI_SOURCES
"${IMGUI_SOURCES}"
"${IMGUI_PATH}/backends/imgui_impl_opengl3.cpp"
"${IMGUI_PATH}/backends/imgui_impl_opengl3.h"
)
set(UDK_EXTERN_SOURCES ${UDK_EXTERN_SOURCES} ${GL3W_SOURCES})
set(UDK_EXTERN_INCLUDES ${UDK_EXTERN_INCLUDES} ${GL3W_PATH})
endif()
set(UDK_EXTERN_SOURCES ${UDK_EXTERN_SOURCES} ${IMGUI_SOURCES})
# Prepare data for parent scope
set(UDK_EXTERN_INCLUDES
${UDK_EXTERN_INCLUDES}
${IMGUI_PATH}
"${CMAKE_CURRENT_SOURCE_DIR}/bullet3/src"
"${CMAKE_CURRENT_SOURCE_DIR}/chemfiles/include"
"${CMAKE_CURRENT_SOURCE_DIR}/GSL/include"
"${CMAKE_CURRENT_SOURCE_DIR}/MarchingCubeCpp"
"${CMAKE_CURRENT_SOURCE_DIR}/portable-file-dialogs"
"${CMAKE_CURRENT_SOURCE_DIR}/stb"
"${CMAKE_CURRENT_SOURCE_DIR}/tinyobjloader"
)
set(UDK_EXTERN_LIBRARIES
SDL2::SDL2
SDL2::SDL2main
EnTT
glm::glm
fmt
BulletDynamics
BulletCollision
LinearMath
chemfiles
)
if(NOT WIN32)
set(UDK_EXTERN_LIBRARIES
${CMAKE_DL_LIBS}
pthread
${UDK_EXTERN_LIBRARIES})
endif()
set(UDK_EXTERN_INCLUDES ${UDK_EXTERN_INCLUDES} PARENT_SCOPE)
set(UDK_EXTERN_SOURCES ${UDK_EXTERN_SOURCES} PARENT_SCOPE)
set(UDK_EXTERN_LIBRARIES ${UDK_EXTERN_LIBRARIES} PARENT_SCOPE)
\ No newline at end of file
Subproject commit d9fc52e20e32fcc804502480a781120b210afd41
Subproject commit 923a8fabc35825070c0583cad0c0b88b90d4e175
Subproject commit bef9f2b2c423d636e2388c62412c754f3bd45968
Subproject commit a1d96646c8ca28b99b2581dcfc4d74cc3b4de018
Subproject commit e1f48faff821d84b6f65cbc8c2320e19b8c00882
Subproject commit ebc0c18534a33afcd49878cadea2620bac5cc6bf
Subproject commit 1f9eae7e31d7777cd06887f533ca0880868b6030
This diff is collapsed.
This diff is collapsed.
#ifndef __khrplatform_h_
#define __khrplatform_h_
/*
** Copyright (c) 2008-2018 The Khronos Group Inc.
**
** Permission is hereby granted, free of charge, to any person obtaining a
** copy of this software and/or associated documentation files (the
** "Materials"), to deal in the Materials without restriction, including
** without limitation the rights to use, copy, modify, merge, publish,
** distribute, sublicense, and/or sell copies of the Materials, and to
** permit persons to whom the Materials are furnished to do so, subject to
** the following conditions:
**
** The above copyright notice and this permission notice shall be included
** in all copies or substantial portions of the Materials.
**
** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
*/
/* Khronos platform-specific types and definitions.
*
* The master copy of khrplatform.h is maintained in the Khronos EGL
* Registry repository at https://github.com/KhronosGroup/EGL-Registry
* The last semantic modification to khrplatform.h was at commit ID:
* 67a3e0864c2d75ea5287b9f3d2eb74a745936692
*
* Adopters may modify this file to suit their platform. Adopters are
* encouraged to submit platform specific modifications to the Khronos
* group so that they can be included in future versions of this file.
* Please submit changes by filing pull requests or issues on
* the EGL Registry repository linked above.
*
*
* See the Implementer's Guidelines for information about where this file
* should be located on your system and for more details of its use:
* http://www.khronos.org/registry/implementers_guide.pdf
*
* This file should be included as
* #include <KHR/khrplatform.h>
* by Khronos client API header files that use its types and defines.
*
* The types in khrplatform.h should only be used to define API-specific types.
*
* Types defined in khrplatform.h:
* khronos_int8_t signed 8 bit
* khronos_uint8_t unsigned 8 bit
* khronos_int16_t signed 16 bit
* khronos_uint16_t unsigned 16 bit