コード例 #1
0
        /// <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;
        }
コード例 #2
0
        /// <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;
        }
コード例 #3
0
        /// <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;
        }