Esempio n. 1
0
        public void TestIsRemoved()
        {
            RemovedByFeatureAttribute a;

            // Version
            a = new RemovedByFeatureAttribute("GL_VERSION_1_1");
            Assert.IsTrue(a.IsRemoved(Gl.Version_110, null));
            Assert.IsFalse(a.IsRemoved(Gl.Version_100, null));

            // All versions greater than the requirement are supported
            Assert.IsTrue(a.IsRemoved(Gl.Version_120, null));
            Assert.IsTrue(a.IsRemoved(Gl.Version_200, null));
            Assert.IsTrue(a.IsRemoved(Gl.Version_450, null));

            // a.FeatureVersion.Profile is null: any profile match
            Assert.IsTrue(a.IsRemoved(new KhronosVersion(Gl.Version_110, KhronosVersion.ProfileCompatibility), null));

            a         = new RemovedByFeatureAttribute("GL_VERSION_3_2");
            a.Profile = KhronosVersion.ProfileCompatibility;

            // a.FeatureVersion.Profile is not null: specific profile match...
            Assert.IsTrue(a.IsRemoved(new KhronosVersion(Gl.Version_320, KhronosVersion.ProfileCompatibility), null));
            Assert.IsFalse(a.IsRemoved(new KhronosVersion(Gl.Version_320, KhronosVersion.ProfileCore), null));
            // ...and even unspecified profile
            Assert.IsTrue(a.IsRemoved(new KhronosVersion(Gl.Version_320, null), null));

            // a.Api must match (no regex)
            Assert.IsFalse(a.IsRemoved(new KhronosVersion(Gl.Version_320_ES, KhronosVersion.ProfileCore), null));

            // Extension
            a = new RemovedByFeatureAttribute("GL_ARB_multisample");
            Assert.IsFalse(a.IsRemoved(new KhronosVersion(Gl.Version_320, KhronosVersion.ProfileCore), null));

            Gl.Extensions extensions = new Gl.Extensions();

            Assert.IsFalse(a.IsRemoved(new KhronosVersion(Gl.Version_320, KhronosVersion.ProfileCore), extensions));

            extensions.EnableExtension("GL_ARB_multisample");
            Assert.IsTrue(a.IsRemoved(new KhronosVersion(Gl.Version_320, KhronosVersion.ProfileCore), extensions));
            // Note: extensions.MultisampleARB is not altered by EnableExtension

            // Version/Profile
            a         = new RemovedByFeatureAttribute("GL_VERSION_3_2");
            a.Profile = "core|compatibility";
            Assert.IsTrue(a.IsRemoved(new KhronosVersion(Gl.Version_320, KhronosVersion.ProfileCore), null));
            Assert.IsTrue(a.IsRemoved(new KhronosVersion(Gl.Version_320, KhronosVersion.ProfileCompatibility), null));
            Assert.IsFalse(a.IsRemoved(new KhronosVersion(Gl.Version_320, KhronosVersion.ProfileCommon), null));
        }
Esempio n. 2
0
        public void TestIsCompatibleField()
        {
            FieldInfo fi = typeof(KhronosApiTest).GetField("GetPointer", BindingFlags.Static | BindingFlags.Public);

            Gl.Extensions extensions = new Gl.Extensions();

            Assert.IsFalse(KhronosApi.IsCompatibleField(fi, Gl.Version_100, extensions));
            Assert.IsTrue(KhronosApi.IsCompatibleField(fi, Gl.Version_110, extensions));
            Assert.IsTrue(KhronosApi.IsCompatibleField(fi, Gl.Version_150, extensions));
            Assert.IsTrue(KhronosApi.IsCompatibleField(fi, Gl.Version_210, extensions));
            Assert.IsTrue(KhronosApi.IsCompatibleField(fi, Gl.Version_300, extensions));
            Assert.IsTrue(KhronosApi.IsCompatibleField(fi, Gl.Version_310, extensions));

            Assert.IsFalse(KhronosApi.IsCompatibleField(fi, new KhronosVersion(Gl.Version_320, KhronosVersion.ProfileCore), extensions));
            Assert.IsFalse(KhronosApi.IsCompatibleField(fi, new KhronosVersion(Gl.Version_400, KhronosVersion.ProfileCore), extensions));
            Assert.IsFalse(KhronosApi.IsCompatibleField(fi, new KhronosVersion(Gl.Version_410, KhronosVersion.ProfileCore), extensions));
            Assert.IsFalse(KhronosApi.IsCompatibleField(fi, new KhronosVersion(Gl.Version_420, KhronosVersion.ProfileCore), extensions));
            Assert.IsTrue(KhronosApi.IsCompatibleField(fi, new KhronosVersion(Gl.Version_430, KhronosVersion.ProfileCore), extensions));
            Assert.IsTrue(KhronosApi.IsCompatibleField(fi, new KhronosVersion(Gl.Version_440, KhronosVersion.ProfileCore), extensions));

            Assert.IsTrue(KhronosApi.IsCompatibleField(fi, new KhronosVersion(Gl.Version_320, KhronosVersion.ProfileCompatibility), extensions));
            Assert.IsTrue(KhronosApi.IsCompatibleField(fi, new KhronosVersion(Gl.Version_400, KhronosVersion.ProfileCompatibility), extensions));
            Assert.IsTrue(KhronosApi.IsCompatibleField(fi, new KhronosVersion(Gl.Version_410, KhronosVersion.ProfileCompatibility), extensions));
            Assert.IsTrue(KhronosApi.IsCompatibleField(fi, new KhronosVersion(Gl.Version_420, KhronosVersion.ProfileCompatibility), extensions));
            Assert.IsTrue(KhronosApi.IsCompatibleField(fi, new KhronosVersion(Gl.Version_430, KhronosVersion.ProfileCompatibility), extensions));
            Assert.IsTrue(KhronosApi.IsCompatibleField(fi, new KhronosVersion(Gl.Version_440, KhronosVersion.ProfileCompatibility), extensions));

            // Not sure how Profile can affect this...
            Assert.IsTrue(KhronosApi.IsCompatibleField(fi, Gl.Version_100_ES, extensions));
            Assert.IsFalse(KhronosApi.IsCompatibleField(fi, Gl.Version_200_ES, extensions));
            Assert.IsFalse(KhronosApi.IsCompatibleField(fi, Gl.Version_300_ES, extensions));
            Assert.IsFalse(KhronosApi.IsCompatibleField(fi, Gl.Version_310_ES, extensions));
            Assert.IsTrue(KhronosApi.IsCompatibleField(fi, Gl.Version_320_ES, extensions));

            extensions.EnableExtension("GL_EXT_vertex_array");
            Assert.IsTrue(KhronosApi.IsCompatibleField(fi, Gl.Version_100, extensions));

            extensions.EnableExtension("GL_KHR_debug");
            Assert.IsTrue(KhronosApi.IsCompatibleField(fi, Gl.Version_100, extensions));
            Assert.IsTrue(KhronosApi.IsCompatibleField(fi, Gl.Version_200_ES, extensions));
        }