Esempio n. 1
0
        private void ClearShadow(int lightIndex)
        {
            if (
                (RenderStack.Graphics.Configuration.canUseTextureArrays == false) &&
                (lightIndex > 0)
                )
            {
                return;
            }

            IFramebuffer framebuffer = shadow;

            renderer.Requested.Viewport = framebuffer.Viewport;

            var shadowAttachment = example.Renderer.Configuration.hardwareShadowPCF
                ? FramebufferAttachment.DepthAttachment
                : FramebufferAttachment.ColorAttachment0;

            framebuffer.Begin();
            if (
                (RenderStack.Graphics.Configuration.canUseTextureArrays) &&
                (RenderStack.Graphics.Configuration.glslVersion >= 330)
                )
            {
                framebuffer.AttachTextureLayer(shadowAttachment, 0, lightIndex);
            }

            GL.Viewport(
                renderer.Requested.Viewport.X,
                renderer.Requested.Viewport.Y,
                renderer.Requested.Viewport.Width,
                renderer.Requested.Viewport.Height
                );

            renderer.PartialGLStateResetToDefaults();

            GL.Disable(EnableCap.ScissorTest);
            GL.ClearColor(1.0f, 1.0f, 1.0f, 1.0f);
            GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
        }