OpenTK Structure
The OpenTK solution provides the following public namespaces:
- OpenTK: contains classes to create windows (GameWindow, NativeWindow), perform 3d math, interact with the monitor (DisplayDevice, DisplayResolution) as well as query the platform configuration.
- OpenTK.Graphics: contains bindings for OpenGL and OpenGL|ES.
- OpenTK.Audio: contains bindings for OpenAL.
- OpenTK.Compute: contains bindings for OpenCL.
- OpenTK.Input: contains classes to interact with input devices (Keyboard, Mouse, Joystick).
- OpenTK.Platform: contains classes to extend OpenTK or interact with the underlying platform.
The public API of OpenTK is completely cross-platform. All platform-specific code is contained in internal interfaces under the OpenTK.Platform namespace. In that sense, most public classes act as façades that forward method calls to the correct platform-specific implementation.
public class Foo : IFoo { IFoo implementation; public Foo() { implementation = OpenTK.Platform.Factory.Default.CreateFoo(); } #region IFoo Members public void Bar() { implementation.Bar(); } #endregion }
This pattern is used in all public OpenTK classes that need platform-specific code to operate: DisplayDevice, DisplayResolution, GraphicsContext, GraphicsMode, NativeWindow and the various input classes.
Classes that do not rely on platform-specific code and classes that contain performance-sensitive code do not use this pattern: the various math classes, the OpenGL, OpenCL and OpenAL bindings, the AudioContext and AudioCapture classes all fall into these categories.
- Printer-friendly version
- Login or register to post comments

