The new SDK version provides a Library API (LibAPI), which contains basic API functions with the same denotation and same parameters in all environments.
In addition to the library API, we provide convenience APIs, which may differ within the supported programming languages, to make the code as convenient as possible. The MATLAB/Octave Convenience API is very similar to the ANSI C Convenience API, and the Python Convenience API is very similar to the C++ Convenience API.
SDK version 4.0 supports the same features as version 3.2, but the API to address most features has changed. We provide a migration guide with information how to upgrade your code from version 3.2 to 4.0. You can also refer to the code examples provided to check in which way it is handled now.
We also introduced a new feature set and type set, to make all APIs capable of multi-SLM features. Classes like the SLMWindow (heds_slmwindow_id) opens on hardware devices and provides an area for creating virtual SLMs. SLMs are now virtually distributed inside an SLMWindow.
New Features
- Multi-SLM feature:
- Using multiple SLM devices connected to the same computer within the same application independently.
- Using multiple SLM on a single SLM display device, due to virtual SLMs.
- Using multiple SLM devices merged within an NVIDIA Mosaic setup to allow perfect hardware synchronization.
- Retrieving SLM preview image data.
- Semantic versioning, i.e. no API version needed any more. API version is now the SDK version using major.minor.
- Improved RGB data support.
- Added support for new devices like GAEA-2.1 and ERIS-1.1.
- ERIS 1.1 120 Hz addressing mode can now be used in 10-bit mode without the need to manually convert images. Just upload float data and it is addressed in 10-bit automatically.
- Unified Library API available in all languages.
- C++ Convenience API, Python Convenience API, MATLAB/Octave Convenience API and LabVIEW Convenience API with improved initialization.
- New examples:
- Airy beam slide shows slideshow_preload_rotating_airy_beam.cpp and slideshow_livecalc_rotating_airy_beam.cpp, which demonstrate to efficiently compute and play slide show data.
- slmpreview_data.cpp, demonstrating the new feature.
- Initialization examples for multi SLM use cases:
- init_slm.cpp : Single SLM.
- init_slm_multi.cpp : Multiple independent SLMs.
- init_slmwindow_layout.cpp : Multiple virtual SLMs on one SLM display device using a simple layout.
- init_slmwindow_mosaic.cpp : Synchronous multi-SLM using NVIDIA Mosaic for combining hardware SLM displays.
- init_slmwindow_multi_slm.cpp : Multiple virtual SLMs on one SLM display device created manually.
- builtin_slideshow.cpp now collects multiple built-in examples from version 3.2 and adds additional cases.
- showflags.cpp : Additional example to demonstrate show flag options in a slide show.
- LabVIEW examples now makes more use of the available GUI.
- MATLAB Library API implementation now provides an error code instead of directly stopping on errors. This allows manual error handling in case functions are called within bigger projects without breaking functionality of the whole project.