/// <summary> /// Initializes OpenGL. /// </summary> /// <param name="initializer">The OpenGL initializer.</param> public static void Initialize(IOpenGLInitializer initializer) { Contract.Require(initializer, nameof(initializer)); Contract.EnsureNot(initialized, GluonStrings.OpenGLAlreadyInitialized); initializing = true; initializer.Prepare(); LoadFunction(initializer, "glGetError", false); LoadFunction(initializer, "glGetIntegerv", false); LoadFunction(initializer, "glGetString", false); LoadFunction(initializer, "glGetStringi", false); LoadVersion(); LoadExtensions(); gl.InitializeDSA(); gl.IsTextureStorageAvailable = IsVersionAtLeast(4, 2) || IsExtensionSupported("GL_ARB_texture_storage"); gl.IsAnisotropicFilteringAvailable = IsExtensionSupported("GL_EXT_texture_filter_anisotropic"); gl.IsVertexAttribBindingAvailable = IsExtensionSupported("GL_ARB_vertex_attrib_binding"); var functions = GetOpenGLFunctionFields(); foreach (var function in functions) { if (!LoadFunction(initializer, function)) { VerboseLog(GluonStrings.CouldNotLoadFunction.Format(function)); } } gl.DefaultFramebuffer = (UInt32)gl.GetInteger(gl.GL_FRAMEBUFFER_BINDING); gl.ThrowIfError(); gl.DefaultRenderbuffer = (UInt32)gl.GetInteger(gl.GL_RENDERBUFFER_BINDING); gl.ThrowIfError(); Debug.WriteLine(GluonStrings.LoadedOpenGLVersion.Format(GetString(GL_VERSION), GetString(GL_VENDOR))); initializer.Cleanup(); initializing = false; initialized = true; }
/// <summary> /// Initializes OpenGL. /// </summary> /// <param name="initializer">The OpenGL initializer.</param> public static void Initialize(IOpenGLInitializer initializer) { Contract.Require(initializer, nameof(initializer)); Contract.EnsureNot(initialized, BindingsStrings.OpenGLAlreadyInitialized); initializing = true; initializer.Prepare(); LoadFunction(initializer, "glGetError", false); LoadFunction(initializer, "glGetIntegerv", false); LoadFunction(initializer, "glGetString", false); LoadFunction(initializer, "glGetStringi", false); LoadVersion(); LoadExtensions(); gl.InitializeDSA(); gl.InitializeFeatureFlags(); var functions = GetOpenGLFunctionFields(); foreach (var function in functions) { if (!LoadFunction(initializer, function)) { VerboseLog(BindingsStrings.CouldNotLoadFunction.Format(function)); } } gl.DefaultFramebuffer = (UInt32)gl.GetInteger(gl.GL_FRAMEBUFFER_BINDING); gl.ThrowIfError(); gl.DefaultRenderbuffer = (UInt32)gl.GetInteger(gl.GL_RENDERBUFFER_BINDING); gl.ThrowIfError(); Debug.WriteLine(BindingsStrings.LoadedOpenGLVersion.Format(GetString(GL_VERSION), GetString(GL_VENDOR))); initializer.Cleanup(); initializing = false; initialized = true; }
/// <summary> /// Initializes OpenGL. /// </summary> /// <param name="initializer">The OpenGL initializer.</param> public static void Initialize(IOpenGLInitializer initializer) { Contract.Require(initializer, nameof(initializer)); Contract.EnsureNot(initialized, GluonStrings.OpenGLAlreadyInitialized); initializing = true; initializer.Prepare(); LoadFunction(initializer, "glGetError", false); LoadFunction(initializer, "glGetIntegerv", false); LoadFunction(initializer, "glGetString", false); LoadFunction(initializer, "glGetStringi", false); LoadVersion(); LoadExtensions(); gl.InitializeDSA(); gl.IsTextureStorageAvailable = IsVersionAtLeast(4, 2) || IsExtensionSupported("GL_ARB_texture_storage"); gl.IsAnisotropicFilteringAvailable = IsExtensionSupported("GL_EXT_texture_filter_anisotropic"); var functions = GetOpenGLFunctionFields(); foreach (var function in functions) { if (!LoadFunction(initializer, function)) { VerboseLog(GluonStrings.CouldNotLoadFunction.Format(function)); } } gl.DefaultFramebuffer = (UInt32)gl.GetInteger(gl.GL_FRAMEBUFFER_BINDING); gl.ThrowIfError(); gl.DefaultRenderbuffer = (UInt32)gl.GetInteger(gl.GL_RENDERBUFFER_BINDING); gl.ThrowIfError(); Debug.WriteLine(GluonStrings.LoadedOpenGLVersion.Format(GetString(GL_VERSION), GetString(GL_VENDOR))); initializer.Cleanup(); initializing = false; initialized = true; }