コード例 #1
0
        public void RenderPointMultipleColorAttachments()
        {
            Texture2DDescription description = new Texture2DDescription(1, 1, TextureFormat.RedGreenBlue8, false);

            string fs =
                @"#version 330
                 
                  out vec3 RedColor;
                  out vec3 GreenColor;

                  void main()
                  {
                      RedColor = vec3(1.0, 0.0, 0.0);
                      GreenColor = vec3(0.0, 1.0, 0.0);
                  }";

            using (GraphicsWindow window = Device.CreateWindow(1, 1))
                using (Framebuffer framebuffer = window.Context.CreateFramebuffer())
                    using (Texture2D redTexture = Device.CreateTexture2D(description))
                        using (Texture2D greenTexture = Device.CreateTexture2D(description))
                            using (ShaderProgram sp = Device.CreateShaderProgram(ShaderSources.PassThroughVertexShader(), fs))
                                using (VertexArray va = TestUtility.CreateVertexArray(window.Context, sp.VertexAttributes["position"].Location))
                                {
                                    Assert.AreNotEqual(sp.FragmentOutputs["RedColor"], sp.FragmentOutputs["GreenColor"]);
                                    framebuffer.ColorAttachments[sp.FragmentOutputs["RedColor"]]   = redTexture;
                                    framebuffer.ColorAttachments[sp.FragmentOutputs["GreenColor"]] = greenTexture;

                                    window.Context.Framebuffer = framebuffer;
                                    window.Context.Draw(PrimitiveType.Points, 0, 1, new DrawState(TestUtility.CreateRenderStateWithoutDepthTest(), sp, va), new SceneState());

                                    TestUtility.ValidateColor(redTexture, 255, 0, 0);
                                    TestUtility.ValidateColor(greenTexture, 0, 255, 0);
                                }
        }
コード例 #2
0
        public void RenderTexturedPoint()
        {
            string fs =
                @"#version 330
                 
                  uniform sampler2D textureUnit;
                  out vec4 FragColor;

                  void main()
                  {
                      FragColor = texture(textureUnit, vec2(0, 0));
                  }";

            using (GraphicsWindow window = Device.CreateWindow(1, 1))
                using (Framebuffer framebuffer = TestUtility.CreateFramebuffer(window.Context))
                    using (ShaderProgram sp = Device.CreateShaderProgram(ShaderSources.PassThroughVertexShader(), fs))
                        using (Texture2D texture = TestUtility.CreateTexture(new BlittableRGBA(Color.FromArgb(0, 255, 0, 0))))
                            using (VertexArray va = TestUtility.CreateVertexArray(window.Context, sp.VertexAttributes["position"].Location))
                            {
                                Uniform <int> textureUniform = (Uniform <int>)sp.Uniforms["textureUnit"];
                                textureUniform.Value = 0;

                                window.Context.TextureUnits[0].Texture        = texture;
                                window.Context.TextureUnits[0].TextureSampler = Device.TextureSamplers.NearestClamp;
                                window.Context.Framebuffer = framebuffer;
                                window.Context.Draw(PrimitiveType.Points, 0, 1, new DrawState(TestUtility.CreateRenderStateWithoutDepthTest(), sp, va), new SceneState());

                                TestUtility.ValidateColor(framebuffer.ColorAttachments[0], 255, 0, 0);
                            }
        }