-
Notifications
You must be signed in to change notification settings - Fork 111
GL \ Abstract
Anyone who wanted to develop a C# application based on OpenGL was faced with the choice of wrapper library exposing the OpenGL entry points and constants.
This project was started years ago to to fill in gaps of some existing libraries (such as Tao.Framework). I wished to have an OpenGL wrapper library that:
- Matches as close as possible the OpenGL specification;
- Integrates fluently with the target language (C# in this case):
- Strongly typed enumerations;
- Function overloads;
- Variant arguments;
- Good documentation integration;
- Maintainable code and updated OpenGL specification.
When this project was started effectively, the OpenGL XML specification was just published by Khronos; previous projects was based on ancient format .spec files.
Where the project is going? The following principles should guide contributors in the project development:
- Portability: the project shall be executable in the following environments
- Windows with Microsoft .NET Framework
- Linux with Mono;
- Embedded systems (such as Windows Embedded or Android).
- Scalability:
The project has some unit test that can be used to test specific API methods.
The repository consists of multiple directories located at the root; each directory define a project that generates applications and libraries, or simply groups a set of information.
- BindingsGen: code generator tool, which generates the updated OpenGL.Net library using the OpenGL XML Specification.
- OpenGL.Net: this library is the main project of the repository. Somehow everything else is based on this project. Most of the code of this project is automatically generated by another application (BindingsGen).
-
OpenGL.Net.WinForms:
UserControl
implementation that allows you to create an OpenGL context using System.Window.Forms namespace. -
OpenGL.Net.Xamarin.Android:
SurfaceView
implementation that allows you to create an OpenGL context using Xamarin/Android runtime. - Samples: directory containing various sample applications.
Currently the project is developed using:
- Visual Studio 2015, Xamarin integrated with Visual Studio, on Windows 7
- [Visual Studio 2017 15.3] (https://www.visualstudio.com) on Windows 7
- Monodevelop, with Mono, on Ubuntu 16
- MS Windows/WGL/OpenGL
- MS Windows/EGL/OpenGL ES 2 (using ANGLE)
- Linux/GLX/OpenGL
- Android/EGL/OpenGL ES 2