public void TestIsValid()
        {
            SceneLayer testLayer  = Scene.CreateLayer("Test layer");
            Window     testWindow = new Window("Test window");
            ConstantBuffer <Matrix> instanceBuffer = BufferFactory.NewConstantBuffer <Matrix>().WithUsage(ResourceUsage.DiscardWrite);
            VertexShader            testShader     = VertexShader.NewDefaultShader(instanceBuffer);
            HUDPass testPass = new HUDPass("Test pass");

            Assert.IsFalse(testPass.IsValid);
            testPass.Input = new Camera();
            testPass.AddLayer(testLayer);
            testPass.Output       = testWindow;
            testPass.VertexShader = testShader;
            Assert.IsFalse(testPass.IsValid);
            testPass.RasterizerState   = new RasterizerState(true, TriangleCullMode.FrontfaceCulling, false);
            testPass.DepthStencilState = new DepthStencilState();
            Assert.IsTrue(testPass.IsValid);
            testPass.RasterizerState.Dispose();
            Assert.IsFalse(testPass.IsValid);

            testPass.DepthStencilState.Dispose();
            testPass.Dispose();
            testShader.Dispose();
            instanceBuffer.Dispose();
            testWindow.Close();
            testLayer.Dispose();
        }
Esempio n. 2
0
        public void TestAddRemoveClearRenderPasses()
        {
            // Define variables and constants
            RenderPass a = new HUDPass("a");
            RenderPass b = new HUDPass("b");
            RenderPass c = new HUDPass("c");

            // Set up context
            RenderingModule.AddRenderPass(b);
            try {
                RenderingModule.AddRenderPass(b);
                Assert.Fail();
            }
            catch (InvalidOperationException) { }

            try {
                RenderingModule.RemoveRenderPass(c);
                Assert.Fail();
            }
            catch (InvalidOperationException) { }

            RenderingModule.AddRenderPass(c);
            RenderingModule.InsertRenderPass(a, b);

            IReadOnlyList <RenderPass> passList = RenderingModule.AddedPasses;

            Assert.AreEqual(a, passList[0]);
            Assert.AreEqual(b, passList[1]);
            Assert.AreEqual(c, passList[2]);

            RenderingModule.ClearPasses();

            passList = RenderingModule.AddedPasses;

            // Assert outcome
            Assert.AreEqual(0, passList.Count);

            a.Dispose();
            b.Dispose();
            c.Dispose();
        }