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); } }
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); } }