Integration
Changes since 2020.06
Dependency changes
- Minimal supported CMake version is now 3.5, changed from 3.4, since CMake 3.27+ warns if a compatibility with CMake below 3.5 is requested. Older versions are not supported anymore and all workarounds for them were removed. This is a conservative change, as there are no known supported distributions which would have anything older than 3.5.
- Minimal supported ImGui version is now 1.88 from June 2022 (see mosra/
magnum-integration#111). The version support policy is now also explicitly adocumented.
New features
- New YogaIntegration library integrating Yoga Layout as a layouter for the Ui library
- Conversion between dynamic Eigen types and Containers::
StridedArrayView using EigenIntegration:: arrayCast() (see mosra/ magnum-integration#74) - Added ImGuiIntegration::
Context:: connectApplicationClipboard() to expose Platform:: *Application:: clipboardText() and Platform:: *Application:: setClipboardText() to ImGui
Changes and improvements
- BulletIntegration now supports Bullet compiled for double precision as well
- Made it possible to override and call BulletIntegration::
MotionState:: getWorldTransform() / BulletIntegration:: MotionState:: setWorldTransform() from user code - Implemented conversion for Math::
Range in EigenIntegration - It's now possible to supply additional ImGui user configuration by defining the
MAGNUM_IMGUIINTEGRATION_USER_CONFIGmacro. See the ImGuiIntegration namespace documentation for an example, see also mosra/magnum-integration#85. - Support for Platform::
*Application:: Cursor:: No in ImGuiIntegration:: Context (see mosra/ magnum-integration#92) - ImGuiIntegration::
Context now supports the VtxOffsetintroduced in 1.71, allowing to draw complex UIs that need more than 65k vertices (see mosra/magnum-integration#82 and mosra/ magnum-integration#90) - ImGuiIntegration::
Context now supports the new ImGui IO API introduced in 1.87, falling back to the previous behavior for older versions (see mosra/ magnum-integration#87, mosra/ magnum-integration#91 and mosra/ magnum-integration#93) - Added support for draw list user callbacks to ImGuiIntegration (see mosra/
magnum-integration#83, mosra/ magnum-integration#84 and mosra/ magnum-integration#98) - Fixed ImGuiIntegration to work with ImGui 1.89 and
IMGUI_DISABLE_OBSOLETE_FUNCTIONSset (see mosra/magnum-integration#100) - Updated ImGuiIntegration::
imageButton() to work with ImGui 1.89+ (see mosra/ magnum-integration#109 and mosra/ magnum-integration#110) - The ImGuiIntegration::
Context:: handlePointerPressEvent(), handlePointerReleaseEvent(), handlePointerMoveEvent() and handleScrollEvent() that operate with the new application pointer events now propagate also the event source to ImGui 1.89.5+, describing whether it's a mouse, touch input or a pen
Build system
- The oldest supported Clang version is now 6.0 (available on Ubuntu 18.04), or equivalently Apple Clang 10.0 (Xcode 10). Oldest supported GCC version is still 4.8.
- Updated
FindImGui.cmaketo optionally include the newimgui_tables.cppsource present in latest versions (see mosra/magnum-integration#78, mosra/ magnum-integration#81) - Updated
FindImGui.cmaketo link toimm32on MinGW, which is needed since ImGui 1.82. - Travis banned everyone from using their CI and so all Linux, macOS, Emscripten, Android and iOS builds were migrated from Travis to Circle CI, together with adding also an explicit ARM64 build and an ability to test GLES and Vulkan functionality on Android. See also mosra/
magnum#350 and mosra/ magnum#523. FindBullet.cmakenow attemps to discover presence of theBT_USE_DOUBLE_PRECISIONpreprocessor macro on both system-wide and subproject workflow and adds it to the imported target to prevent linker errors- The Homebrew package now uses
std_cmake_argsinstead of hardcoded build type and install prefix, which resolves certain build issues (see mosra/homebrew-magnum#6) - It's now possible to use
<PackageName>_ROOTto point to install locations of dependencies such as Corrade on CMake 3.12+, in addition to putting them all together insideCMAKE_PREFIX_PATH. See also mosra/magnum#614. - On CMake 3.16 and newer,
FindMagnumIntegration.cmakecan provide additional details if some component is not found - Updated Debian build instructions to pass
--no-signtodpkg-buildpackage, avoiding a confusing error message that might lead people to think the packaging failed (see mosra/magnum-plugins#105) - Fixed wrong
.gitattributesoption for LF line endings in MSYS PKGBUILDs (see mosra/magnum-integration#97) - It's now possible to build dynamic libraries on Android and Emscripten with the usual options. Static libraries are still a default but it isn't enforced anymore. See mosra/
magnum#617. - Fixed most remaining warnings on MSVC, in particular those related to "conversion from T to void * of greater size" (see mosra/
magnum#544). - Fixed
FindMagnumIntegration.cmaketo correctly find the Magnum Integration include directory when it's installed to a different directory than Magnum itself (see mosra/magnum-integration#105) - A dynamic build of ImGuiIntegration now correctly links against ImGui that's built as static, fixing a common issue on Vcpkg (see mosra/
magnum-integration#67 and mosra/ magnum-integration#104). - Magnum Integration libraries now automatically install and use Find modules for their dependencies in a way that doesn't clash with modules of the same name potentially installed by other software, meaning the user doesn't need to copy and carry them along anymore (see mosra/
magnum#436) - Created a RPM package with a helper script for building (see mosra/
magnum-integration#113) - Fixed the MSYS development package name (see mosra/
magnum-integration#116) - Added a static build on the CIs (see mosra/
magnum-integration#80)
Bug fixes
- ImGuiIntegration::
Context now properly uses the IdxOffsetintroduced in 1.71. As of 1.86 it no longer has an implicit value, causing visual glitches. See also mosra/magnum-integration#86 and mosra/ magnum-integration#88. - Fixed a temporary breakage in Find module logic for EigenIntegration that caused it to rely on a non-existent
configure.hfile (see mosra/magnum-integration#117)
Deprecated APIs
- All CMake build options are now prefixed with
MAGNUM_. AllWITH_options are now also suffixed withINTEGRATIONfor clarity, so instead of e.g.WITH_BULLETit's nowMAGNUM_WITH_BULLETINTEGRATION. For backwards compatibility, unless MAGNUM_BUILD_ DEPRECATED is disabled and unless a prefixed / suffixed option is already set during the initial run, the unprefixed & unsuffixed options are still recognized with a warning. See also mosra/ corrade#139. ImGuiIntegration::Context::handleMousePressEvent(),handleMouseReleaseEvent(),handleMouseMoveEvent()andhandleMouseScrollEvent()that operated with the now-deprecated application mouse events are deprecated in favor of ImGuiIntegration::Context:: handlePointerPressEvent(), handlePointerReleaseEvent(), handlePointerMoveEvent() and handleScrollEvent() that accept the new pointer and scroll events instead.
Potential compatibility breakages, removed APIs
- Removed
BulletIntegration::DebugDraw::DebugMode,DebugModes,mode()andsetDebugMode()deprecated in 2018.10, use BulletIntegration::DebugDraw:: Mode, Modes, mode() and setMode() instead - ImGuiIntegration now stores OpenGL texture ID inside
ImTextureIDinstead of a pointer to a live GL::Texture2D instance. This is done in order to prevent crashes in case of accidental misuse, and to make the internals simpler as well. You're encouraged to use the new ImGuiIntegration:: textureId() helper instead of a manual cast in your code. See also mosra/ magnum#476, mosra/ magnum-integration#108 and mosra/ magnum-integration#112.
Documentation
- Various improvements, fixes and clarifications (see mosra/
magnum-integration#75, mosra/ magnum-integration#95) - Documented how to enable ImGui in Debian packages (see mosra/
magnum-integration#73)
2020.06
Released 2020-06-27, tagged as v2020.06.
New features
- New ImGuiIntegration::
Context:: updateApplicationCursor() allowing ImGui to update application cursor using the new *Application:: setCursor() APIs (see mosra/ magnum-integration#56, mosra/ magnum-integration#71 and mosra/ magnum-integration#72)
Changes and improvements
- Simplified DartIntegration internals using EigenIntegration, ignoring NaN values sometimes coming from DART (see mosra/
magnum-integration#58) - ImGuiIntegration::
Context:: drawFrame() now resets scissor rectangle back to the full framebuffer to avoid nasty surprises when scissor test is not disabled again right after (see mosra/ magnum-examples#68) - ImGuiIntegration::
Context:: handleKeyPressEvent() now treats Platform:: *Application:: KeyEvent:: Key:: NumEnter the same way as Key:: Enter - Exposing font atlas texture via ImGuiIntegration::
Context:: atlasTexture() (see mosra/ magnum-integration#60, mosra/ magnum-integration#61, mosra/ magnum-integration#62 and mosra/ magnum-integration#63) - Avoid using obsolete ImGui APIs in tests (see mosra/
magnum-integration#65) - Library version is now exposed through
MAGNUMINTEGRATION_VERSION_YEAR,MAGNUMINTEGRATION_VERSION_MONTH,MAGNUMINTEGRATION_VERSION_COMMIT,MAGNUMINTEGRATION_VERSION_HASHandMAGNUMINTEGRATION_VERSION_STRINGpreprocessor defines in a newMagnum/versionIntegration.hheader. This header is not included by any other header to avoid trigerring a full rebuild when Git commit changes. If Git is not found, only the first two defines are present. - ImGuiIntegration now uses Magnum's own
Shaders::Flat2Dinstead of a custom shader, which finally makes it work on GLES2 and WebGL 1
Build system
- Various minor fixes (see mosra/
magnum-integration#68) - The library again compiles and tests cleanly with CORRADE_
NO_ ASSERT enabled, and this setup is verified on the CI to avoid further regressions - Updated GlmIntegration tests to build against 0.9.9.8 (see mosra/
magnum-integration#70)
Bug fixes
- Due to a SDL2 bug on Windows that halts all event processing when dragging a window across the screen, ImGui v1.68 and newer would receive zero delta time and assert. ImGuiIntegration::
Context now detects that and passes a non-zero delta time in that case. See also mosra/ magnum-integration#57.
Documentation
- Various fixes and clarifications (see mosra/
magnum-integration#66)
2019.10
Released 2019-10-24, tagged as v2019.10.
Dependency changes
- Minimal supported CMake version is now 3.4. Older versions are not supported anymore and all workarounds for them were removed. Download a prebuilt release of a newer version if you need to use Corrade on older systems (such as Ubuntu 14.04 or Debian 8). This is a conservative change that shouldn't affect any additional distribution compared to the CMake 3.1 requirement in 2019.01.
New features
- MSVC 2019 compatibility, following other Magnum projects
- When using Magnum as a CMake subproject, it now puts all binaries into a common directory to simplify
PATHhandling and dynamic plugin loading. For more information see Using Magnum Integration as a CMake subproject, mosra/magnum#357 and mosra/ magnum-plugins#63. - New EigenIntegration library, providing conversion of math types from and to Eigen APIs (see mosra/
magnum-integration#40) - New ImGuiIntegration::
imageButton() widget for drawing an image button out of GL:: Texture2D (see mosra/ magnum-integration#38)
Changes and improvements
- ImGuiIntegration::
Context:: handleKey*Event() now handles the Space key as well (see mosra/ magnum-integration#44) - ImGuiIntegration::
Context:: handleMousePressEvent() and ImGuiIntegration:: Context:: handleMouseReleaseEvent() are fixed to avoid ignoring mouse clicks if both press and release happens in the same frame - Assorted DartIntegration updates (see mosra/
magnum-integration#47): - DartIntegration::
convertShapeNode() can now handle cones as well - Converted shapes now look less like a plastic, soft bodies having smooth normals and no specular highlights
- DartIntegration::
World:: step() takes an optional parameter to reset commands
- DartIntegration::
- DartIntegration::
World can now work with an external plugin manager instance - ImGuiIntegration::
Context:: relayout() now rebuilds the glyph cache also when fonts change, not just on pixel density change (see mosra/ magnum-integration#51) - Added Super key (Windows/⌘) handling to ImGuiIntegration::
Context:: handleKey*Event()
Build system
- The
package/msysdirectory now containsPKGBUILDs for MSYS2. See MSYS2 packages for more information. See also mosra/magnum-integration#39 and mosra/ magnum#317. - If both a CMake-based ImGui installation is found and
IMGUI_DIRis set when building,FindImGui.cmakeprefers the location given byIMGUI_DIR - ES 2.0 and ES 3.0 subset of tests requiring GL context is now run on Travis CI using SwiftShader for better code coverage (see mosra/
magnum#207) - Updated Homebrew package to build also the DartIntegration, since the
dartsimdependency is usable now (see mosra/magnum-integration#46) - Emscripten builds now have the
-fPICoption disabled by default as it causes linker errors related to__memory_baseon 1.38.36 (see also emscripten-core/emscripten#8761) - Explicitly mention that ImGuiIntegration is not available in Homebrew packages due to a missing dependency (see mosra/
magnum-integration#49) - Updated
FindImGui.cmaketo explicitly link to theApplicationServicesframework on macOS, since that's needed for ImGui 1.71 clipboard handling (see mosra/magnum-integration#48) - BulletIntegration can now use Bullet from Emscripten Ports instead of looking for a prebuilt version elsewhere when the
MAGNUM_USE_EMSCRIPTEN_PORTS_BULLETCMake option is enabled. See Using dependencies from Emscripten Ports and mosra/magnum-integration#53.
Bug fixes
- The ImGuiIntegration::
image() widget was flipping the texture vertically (see mosra/ magnum-integration#38) - DartIntegration::
convertShapeNode() was orienting cylinders and capsules improperly (see mosra/ magnum-integration#47) - Headers in the ImGuiIntegration library had messed up include guards (see mosra/
magnum-integration#50)
Potential compatibility breakages, removed APIs
- Removed
BulletIntegration::convertShape()as it was depending on the now-removedShapeslibrary, deprecated since 2018.10
Documentation
- ImGuiIntegration::
Context now mentions possible pitfalls when supplying in-memory fonts to ImGui (see mosra/ magnum-integration#42) - Better documenting the need for extra CMake modules when using ImGuiIntegration (see mosra/
magnum-examples#64)
2019.01
Released 2019-02-04, tagged as v2019.01.
Dependency changes
- Minimal supported GCC version is now 4.8.1, GCC 4.7 is not supported anymore. Minimal Clang version is now 3.3, since that's the first version with a complete C++11 support. See also mosra/
magnum#274. - Minimal supported CMake version is now 3.1. Older versions are not supported anymore and all workarounds for them were removed. Download a prebuilt release of a newer version if you need to use Corrade on older systems (such as Ubuntu 14.04 or Debian 8). See also mosra/
magnum#274.
New features
- New ImGuiIntegration library to render Dear ImGui user interfaces (see mosra/
magnum-integration#33 and mosra/ magnum#36)
Bug fixes
- Conversion of 3x3 matrices in the BulletIntegration was transposing them by mistake. This was only discoverable if the transformation of objects attached to BulletIntegration::
MotionState included rotation. See also mosra/ magnum-integration#34.
Deprecated APIs
- The
Magnum/OvrIntegration/Conversion.hheader name was not consistent with other libraries and thus is deprecated, use Magnum/OvrIntegration/ Integration.h instead
Potential compatibility breakages, removed APIs
- Removed
MAGNUM_*INTEGRATION_LIBRARIESandMAGNUM_*INTEGRATION_INCLUDE_DIRSCMake variables, which were deprecated in favor ofMagnumIntegration::*imported targets in February 2016.
Documentation
- The BulletIntegration::
MotionState docs gave a false impression that the transformation update is two-way, while it is only from bullet to SceneGraph. The docs are now clarified and suggest possible solutions. See also mosra/ magnum-integration#35.
2018.10
Released 2018-10-23, tagged as v2018.10.
New features
- New GlmIntegration library that provides conversion and debug output for GLM math types.
Changes and improvements
- Updated the OvrIntegration library to work with OVR SDK 1.17 and newer and adapted it to work with latest changes in the GL library (see mosra/
magnum-integration#26 and mosra/ magnum-integration#32) - It's now possible to construct BulletIntegration::
DebugDraw without an active GL context using the NoCreate tag
Build system
- There's now a PPA for Ubuntu packages. See Packages for Debian, Ubuntu and derivatives for more information. See also mosra/
magnum-integration#31.
Bug fixes
- Sometimes Bullet reports object transformation full of NaNs. Unsure what the real cause is but NaNs trigger an axis normalization assert in Math::
Matrix4:: rotation(), so the BulletIntegration:: MotionState class is ignoring this case with a warning.
Deprecated APIs
BulletIntegration::DebugDraw::DebugMode,DebugModes,mode()andsetDebugMode()are deprecated, use BulletIntegration::DebugDraw:: Mode, Modes, mode() and setMode() instead. The Mode and Modes enums were deprecated by mistake in 2018.02, now they are reverted back to non-deprecated state. BulletIntegration::DebugDraw::Mode::FastWireframhas a typo and is deprecated, use BulletIntegration::DebugDraw:: Mode:: FastWireframe instead
Changelogs for previous versions are available in Archived integration changelogs.