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, the .NET Fallback will be 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. |
The following convention is used by the Used By columns of the tables in the following subsections:
- A ⇒ B, C, …
-
The type or member A is used with a suitable API (see the documentation of A for obvious choices), to obtain objects of type B, C, …
- A . B
- A :: B
- A → B, C, …
-
The members B, C, … of the type A are used.
CodeX.System / Windows
This section shows the native functions used by the SDK component CodeX.System.
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++ |
|
|
Windows |
C++ |
|
CodeX.System / POSIX
This section shows the native functions used by the SDK component CodeX.System.
Native Dependency | Platform | SDK | Used By |
---|---|---|---|
POSIX |
C++ |
|
|
POSIX |
C++ |
|
|
POSIX |
C++ |
|
|
POSIX |
C++ |
|
|
POSIX |
C++ |
|
Tinman.Licence / Windows
This section shows the native functions used by the SDK component Tinman.Licence.
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++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
Tinman.Licence / POSIX
This section shows the native functions used by the SDK component Tinman.Licence.
Native Dependency | Platform | SDK | Used By |
---|---|---|---|
POSIX |
C++ |
||
POSIX |
C++ |
||
POSIX |
C++ |
||
POSIX |
C++ |
||
POSIX |
C++ |
||
POSIX |
C++ |
||
POSIX |
C++ |
||
POSIX |
C++ |
||
POSIX |
C++ |
||
POSIX |
C++ |
||
POSIX |
C++ |
||
POSIX |
C++ |
||
POSIX |
C++ |
Tinman.Core
This section shows the native functions used by the SDK component Tinman.Core.
Native Dependency | Platform | SDK | Used By |
---|---|---|---|
all |
C++ |
||
all |
C++ |
||
all |
C++ |
||
all |
C++ |
||
all |
C++ |
||
all |
C++ |
||
all |
C++ |
||
all |
C# |
||
all |
C++ |
||
all |
C++ |
||
all |
C++ |
||
all |
C++ |
||
all |
C++ |
Tinman.Core / Windows
This section shows the native functions used by the SDK component Tinman.Core.
Native Dependency | Platform | SDK | Used By |
---|---|---|---|
Windows |
C# C++ |
||
Windows |
C# C++ |
||
Windows |
C++ |
SocketEndPoint ⇒ IConnection → (Close, Discard, Dispose), IServer → Dispose |
|
Windows |
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++ |
||
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++ |
||
Windows |
C++ |
||
Windows |
C# C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
||
Windows |
C++ |
Thread.Name
( |
|
Windows |
C++ |
||
Windows |
C# C++ |
LocalFileSystem ⇒ IFile → Read |
|
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++ |
SimpleHttp ⇒ … |
|
Windows |
C++ |
SimpleHttp ⇒ … |
|
Windows |
C++ |
SimpleHttp ⇒ … |
|
Windows |
C++ |
SimpleHttp ⇒ … |
|
Windows |
C++ |
SimpleHttp ⇒ … |
|
Windows |
C++ |
SimpleHttp ⇒ … |
|
Windows |
C++ |
SimpleHttp ⇒ … |
|
Windows |
C++ |
SimpleHttp ⇒ … |
|
Windows |
C++ |
SimpleHttp ⇒ … |
|
Windows |
C++ |
SimpleHttp ⇒ … |
|
Windows |
C++ |
SimpleHttp ⇒ … |
|
Windows |
C++ |
SimpleHttp ⇒ … |
|
Windows |
C++ |
||
Windows |
C# C++ |
||
Windows |
C++ |
SocketEndPoint ⇒ … |
|
Windows |
C++ |
Tinman.Core / POSIX
This section shows the native functions used by the SDK component Tinman.Core.
Native Dependency | Platform | SDK | Used By |
---|---|---|---|
POSIX |
C++ |
||
POSIX |
C++ |
||
POSIX |
C# C++ |
SocketEndPoint ⇒ IConnection → (Close, Discard, Dispose), IServer → Dispose |
|
POSIX |
C++ |
||
POSIX |
C# C++ |
||
POSIX |
C# C++ |
||
POSIX |
C# C++ |
||
POSIX |
C++ |
||
POSIX |
C++ |
||
POSIX |
C++ |
||
POSIX |
C# C++ |
||
POSIX |
C# C++ |
||
POSIX |
C# |
||
POSIX |
C++ |
||
POSIX |
C++ |
||
POSIX |
C++ |
||
POSIX |
C++ |
||
POSIX |
C++ |
||
POSIX |
C++ |
||
POSIX |
C++ |
||
POSIX |
C++ |
||
POSIX |
C++ |
||
POSIX |
C++ |
||
POSIX |
C# C++ |
||
POSIX |
C++ |
||
POSIX |
C++ |
||
POSIX |
C# C++ |
LocalFileSystem ⇒ IFile → Read |
|
POSIX |
C# |
LocalFileSystem ⇒ IFile → Read |
|
POSIX |
C++ |
||
POSIX |
C++ |
||
POSIX |
C++ |
||
POSIX |
C++ |
||
POSIX |
C++ |
||
POSIX |
C++ |
||
POSIX |
C++ |
||
POSIX |
C++ |
||
POSIX |
C++ |
||
POSIX |
C++ |
Thread ⇒ IThreadMain → Run |
|
POSIX |
C++ |
||
POSIX |
C++ |
||
POSIX |
C++ |
||
POSIX |
C++ |
||
POSIX |
C++ |
||
POSIX |
C++ |
||
POSIX |
C++ |
Thread.Name
( |
|
POSIX |
C# C++ |
||
POSIX |
C# |
||
POSIX |
C++ |
||
POSIX |
C++ |
||
POSIX |
C++ |
||
POSIX |
C++ |
||
POSIX |
C++ |
||
POSIX |
C++ |
||
POSIX |
C++ |
||
POSIX |
C++ |
||
POSIX |
C++ |
||
POSIX |
C++ |
||
POSIX |
C++ |
||
POSIX |
C# C++ |
||
POSIX |
C# |
||
POSIX |
C++ |
||
POSIX |
C++ |
Tinman.Engine / Windows
This section shows the native functions used by the SDK component Tinman.Engine.
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++ |
||
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 used by the SDK component Tinman.AddOns.DirectX12.
Native Dependency | Platform | SDK | Used By |
---|---|---|---|
Windows |
C++ |
Tinman.AddOns.WinForms
This section shows the native functions used by the SDK component Tinman.AddOns.WinForms.
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 6.0 (or higher, if available) or .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 → 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
-
Available only when running in a .NET 6.0 (or higher) environment. In other environments, native libraries cannot be loaded dynamically.
In consequence, the following may be unavailable:
AssimpModelFormat, GdalImageFormat, ProjCoordinateTransform, MG, GL, GLES, WGL, GLX, EGL. - Terminal.Window
-
No new console window will be created. Only the title of the existing console window will be set.
Tinman.Engine
- ApplicationWindowFactory.All
-
There is no built-in IApplicationWindowFactory instance, the returned list will be empty. Factories must be provided by another library.
This also affects the following: