Native Libraries
This page documents the native functions that are used by the Abstraction Layers of the Tinman 3D SDK.
Platforms
The following identifiers are used to refer to native platforms.
- Windows / LowLevel.IsWindows
-
Running on a system with Windows 7 or newer.
- POSIX / LowLevel.IsPosix
-
Running on a POSIX.1-2008 compliant system.
The LowLevel.PlatformForce method can be used to override automatic platform detection. |
Static Linkage
The native functions listed in this section are required by the Tinman 3D SDK. If not available, errors will occur:
- C#
-
DllNotFoundException or EntryPointNotFoundException will be thrown when the native function is used for the first time. If neither Windows nor POSIX is available at runtime, only .NET Standard 2.0 is used.
- C++
-
Executables will fail to start and dynamic link libraries will fail to load. Either the Windows or the POSIX platform must be available, otherwise compilation will fail.
The separate AddOn library components wrap 3rd-party libraries (for example Direct3D or SQLite). Their respective native function / library dependencies are not documented here. |
CodeX.System
This section shows the native functions that are used by the SDK component CodeX.System via static linkage.
Native Dependency | Platform | SDK | Used By |
---|---|---|---|
Windows |
C++ |
|
|
Windows |
C++ |
|
|
Windows |
C++ |
|
|
Windows |
C++ |
|
|
Windows |
C++ |
|
|
Windows |
C++ |
|
|
Windows |
C++ |
|
|
Windows |
C++ |
|
|
Windows |
C++ |
|
|
Windows |
C++ |
|
|
Windows |
C++ |
|
|
Windows |
C++ |
|
|
Windows |
C++ |
|
|
Windows |
C++ |
|
|
Windows |
C++ |
|
|
Windows |
C++ |
|
|
Windows |
C++ |
|
Tinman.Licence
This section shows the native functions that are used by the SDK component Tinman.Licence via static linkage.
Native Dependency | Platform | SDK | Used By |
---|---|---|---|
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
Tinman.Core
This section shows the native functions that are used by the SDK component Tinman.Core via static linkage.
Native Dependency | Platform | SDK | Used By |
---|---|---|---|
Windows |
C# C++ |
||
Windows |
C# C++ |
||
Windows |
C++ |
||
Windows |
C# C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C# C++ |
||
Windows |
C++ |
||
Windows |
C# C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C# C++ |
||
Windows |
C# C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C# C++ |
||
Windows |
C++ |
||
Windows |
C# C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C# C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C# C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C# C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C# C++ |
||
Windows |
C# C++ |
||
Windows |
C++ |
Thread.Name → Thread.Start ( |
|
Windows |
C# C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C# C++ |
||
Windows |
C++ |
||
Windows |
C# C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C# C++ |
||
all |
C++ |
||
all |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
all |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
all |
C++ |
||
all |
C++ |
||
all |
C++ |
||
all |
C# |
||
all |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
Tinman.Engine
This section shows the native functions that are used by the SDK component Tinman.Engine via static linkage.
Native Dependency | Platform | SDK | Used By |
---|---|---|---|
Windows |
C# C++ |
||
Windows |
C# C++ |
||
Windows |
C# C++ |
||
Windows |
C# C++ |
||
Windows |
C# C++ |
||
Windows |
C# C++ |
||
Windows |
C# C++ |
||
Windows |
C# C++ |
||
Windows |
C# C++ |
||
Windows |
C# C++ |
||
Windows |
C++ |
||
Windows |
C# C++ |
||
Windows |
C# C++ |
||
Windows |
C# C++ |
||
Windows |
C# C++ |
||
Windows |
C# C++ |
||
Windows |
C# C++ |
||
Windows |
C# C++ |
||
Windows |
C# C++ |
||
Windows |
C# C++ |
||
Windows |
C# C++ |
||
Windows |
C++ |
||
Windows |
C# C++ |
||
Windows |
C# C++ |
||
Windows |
C# C++ |
||
Windows |
C# C++ |
||
Windows |
C# C++ |
||
Windows |
C# C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C# C++ |
||
Windows |
C# C++ |
||
Windows |
C# C++ |
||
Windows |
C# C++ |
||
Windows |
C# C++ |
||
Windows |
C++ |
||
Windows |
C# C++ |
||
Windows |
C# C++ |
||
Windows |
C# C++ |
||
Windows |
C# C++ |
||
Windows |
C# C++ |
||
Windows |
C# C++ |
||
Windows |
C# C++ |
||
Windows |
C# C++ |
||
Windows |
C# C++ |
||
Windows |
C# C++ |
||
Windows |
C# C++ |
||
Windows |
C# C++ |
||
Windows |
C# C++ |
||
Windows |
C# C++ |
||
Windows |
C# C++ |
||
Windows |
C# C++ |
||
Windows |
C# C++ |
||
Windows |
C# C++ |
||
Windows |
C# C++ |
Tinman.AddOns.DirectX12
This section shows the native functions that are used by the SDK component Tinman.AddOns.DirectX12 via static linkage.
Native Dependency | Platform | SDK | Used By |
---|---|---|---|
Windows |
C++ |
Tinman.AddOns.WinForms
This section shows the native functions that are used by the SDK component Tinman.AddOns.WinForms via static linkage.
Native Dependency | Platform | SDK | Used By |
---|---|---|---|
Windows |
C# |
|
|
Windows |
C# |
|
Dynamic Linkage
The native functions listed in this section are accessed through the NativeLibrary class. They are not required by the Tinman 3D SDK, but their availability will enable add-on features.
The source code of all NativeLibrary subclasses (including non-public ones) is included in the SDK. Please refer to the LibraryNames and InitializeFunctionPointers members for details on which native library files are loaded and which entry points are queried. |
SDK Feature | Native Library Wrapper |
---|---|
File Formats |
|
AssimpLibrary (non-public class) |
|
GdalLibrary (non-public class) |
|
OpenGL |
|
OpenGLBufferFactory, OpenGLContextFactory, OpenGLMeshDispatcher, OpenGLPrimitiveRenderer, OpenGLTextureFactory, OpenGLWorkDispatcher |
|
OpenGLES |
|
OpenGLESBufferFactory, OpenGLESContextFactory, OpenGLESMeshDispatcher, OpenGLESPrimitiveRenderer, OpenGLESTextureFactory, |
|
Miscellaneous |
|
ProjLibrary (non-public class) |
.NET Fallback
The C# version of the Tinman 3D SDK will fallback to plain .NET Standard 2.0 if both LowLevel.IsWindows and LowLevel.IsPosix return false
.
In fallback mode, some functionality will be limited or unavailable, as described below.
Tinman.Core
- LocalFileSystem → IFile.Read
- LocalFileSystem → IFile.Write
-
Concurrent accesses are synchronized per file and thus become sequential.
- LocalFileSystem → IFileSystem.DirectoryFreeSpace
-
Not available, the method will return
0
. - LocalFileSystem → IFileSystem.MaximumDirectoryPathLength
- LocalFileSystem → IFileSystem.MaximumFilePathLength
- LocalFileSystem → IFileSystem.MaximumPathElementLength
-
Not available, the properties will return Maths.MaxInt.
- LowLevel.CpuTotal
- LowLevel.CpuUsed
- LowLevel.MemoryTotal
- LowLevel.MemoryUsed
-
Not available, the properties will return
0
. - LowLevel.TickCount
- LowLevel.TickCountPrecise
-
Instead of the high-resolution timer, the default system timer is used, which might be less accurate.
- NativeLibrary.IsLibraryLoaded
- NativeLibrary.LookupFunctionPointer
-
Not available, native libraries cannot be loaded.
In consequence, the following will also not be available: AssimpModelFormat, GdalImageFormat, ProjCoordinateTransform, MG, GL, GLES, WGL, GLX, EGL. - Terminal.Window
-
Not available, the method will return silently.
Tinman.Engine
- ApplicationUtil.Clipboard
-
Not available, using this property has no effect.
- ApplicationWindow.Create
-
Not available, the method will return
null
. - RenderContext.Create
- RenderContext.Current
-
Not available, the methods will return
null
.