IntPtrからDelegate作成

OpenGLで垂直同期をオフにする方法を調べてたら見つけたのでメモ。

        public delegate bool wglSwapIntervalEXTDeleagte(int interval);

        public static wglSwapIntervalEXTDeleagte wglSwapIntervalEXT;

        public static void SetUpEXT()
        {
            if (GL.glGetString(GL.GL_EXTENSIONS).Contains("WGL_EXT_swap_control"))
            {
                IntPtr addr = WGL.wglGetProcAddress("wglSwapIntervalEXT");

                WGL.wglSwapIntervalEXT =
                    Marshal.GetDelegateForFunctionPointer(addr, typeof(WGL.wglSwapIntervalEXTDeleagte)) as WGL.wglSwapIntervalEXTDeleagte;
            }
        }