public unsafe HighlightDrawer(IGraphicsInfra infra, IBlurDrawer blurDrawer, IQuadDrawer quadDrawer, IBleedDrawer bleedDrawer, IOffScreenContainer offScreenContainer) { this.infra = infra; this.blurDrawer = blurDrawer; this.quadDrawer = quadDrawer; this.bleedDrawer = bleedDrawer; this.offScreenContainer = offScreenContainer; #region Shader Text const string vertexShaderText = @"#version 150 in vec4 in_position; void main() { gl_Position = in_position; } "; const string fragmentShaderText = @"#version 150 out vec4 out_color; void main() { out_color = vec4(1, 1, 1, 1); } "; #endregion var vs = infra.GlContext.Create.VertexShader(vertexShaderText); var fs = infra.GlContext.Create.FragmentShader(fragmentShaderText); program = infra.GlContext.Create.Program(new ShaderProgramDescription { VertexShaders = vs.EnumSelf(), FragmentShaders = fs.EnumSelf(), VertexAttributeNames = new[] { "in_position" } }); var vertices = new[] { new Vector4(-1, 1, 0.5f, 1), new Vector4(-1, -1, 0.5f, 1), new Vector4(1, 1, 0.5f, 1), new Vector4(1, -1, 0.5f, 1) }; IBuffer vb; fixed(Vector4 *pVertices = vertices) vb = infra.GlContext.Create.Buffer(BufferTarget.Array, vertices.Length * sizeof(Vector4), BufferUsageHint.StaticDraw, (IntPtr)pVertices); vao = infra.GlContext.Create.VertexArray(); vao.SetVertexAttributeF(0, vb, VertexAttributeDimension.Four, VertexAttribPointerType.Float, false, sizeof(Vector4), 0); drawSpotFramebuffer = infra.GlContext.Create.Framebuffer(); }
public RenderingRuntime(IGraphicsInfra infra, ISceneRendererPool sceneRendererPool, IOffScreenContainer offScreenContainer) { this.infra = infra; this.sceneRendererPool = sceneRendererPool; this.offScreenContainer = offScreenContainer; offScreenCacheDeathNote = new List <object>(); sceneRendererSettingsCache = new Dictionary <Tuple3 <bool>, IPropertyBag>(); glContext = infra.GlContext; rttFramebuffer = glContext.Create.Framebuffer(); }