private void CheckFeatures() { GLHelper.ParseGLVersion(GL.GetString(StringName.Version), out GLMajorVersion, out GLMinorVersion, out ESProfile); var glExtensions = new HashSet <string>(GL.GetString(StringName.Extensions).Split(' ')); SupportsTextureRG = !ESProfile || GLMajorVersion >= 3 || glExtensions.Contains("GL_EXT_texture_rg"); SupportsPackedDepth24Stencil8 = !ESProfile || GLMajorVersion >= 3 || glExtensions.Contains("GL_OES_packed_depth_stencil"); SupportsDepth24 = !ESProfile || GLMajorVersion >= 3 || glExtensions.Contains("GL_OES_depth24"); var supportsS3tc = glExtensions.Contains("GL_EXT_texture_compression_s3tc"); SupportsDxt1 = supportsS3tc || glExtensions.Contains("GL_EXT_texture_compression_dxt1"); SupportsDxt3 = supportsS3tc || glExtensions.Contains("GL_ANGLE_texture_compression_dxt3"); SupportsDxt5 = supportsS3tc || glExtensions.Contains("GL_ANGLE_texture_compression_dxt5"); SupportsPvrtc1 = glExtensions.Contains("GL_IMG_texture_compression_pvrtc"); SupportsPvrtc2 = glExtensions.Contains("GL_IMG_texture_compression_pvrtc2"); SupportsEtc1 = glExtensions.Contains("GL_OES_compressed_ETC1_RGB8_texture"); SupportsEtc2 = (ESProfile && GLMajorVersion >= 3) || glExtensions.Contains("GL_ARB_ES3_compatibility"); SupportsInternalFormatBgra8 = ESProfile && glExtensions.Contains("GL_EXT_texture_format_BGRA8888"); SupportsExternalFormatBgra8 = SupportsInternalFormatBgra8 || !ESProfile || glExtensions.Contains("GL_APPLE_texture_format_BGRA8888"); GL.GetInteger(GetPName.MaxCombinedTextureImageUnits, out var maxTextureSlots); GL.GetInteger(GetPName.MaxVertexAttribs, out var maxVertexAttributes); MaxTextureSlots = Math.Min(maxTextureSlots, 32); MaxVertexAttributes = Math.Min(maxVertexAttributes, 64); MaxVertexBufferSlots = MaxVertexAttributes; }