Example #1
0
        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();
        }
Example #2
0
        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();
        }