Пример #1
0
        private static void ParseJsonFramebuffers(Json jsonSettings, List <Framebuffer> framebuffers)
        {
            //Framebuffers
            foreach (var fbPair in jsonSettings.framebuffers)
            {
                string fbName = fbPair.Key;
                var    fb     = fbPair.Value;

                var framebuffer = Framebuffer.Create(fbName);

                Framebuffer.Bind(framebuffer);

                foreach (var texPair in fb.textures)
                {
                    //bool noWrite = false;
                    string texName = texPair.Key;
                    var    tex     = texPair.Value;

                    switch (tex.type)
                    {
                    case TextureAttachmentType.Color:
                        break;

                    case TextureAttachmentType.Depth:
                        //noWrite = true;
                        break;

                    case TextureAttachmentType.DepthStencil: {
                        framebuffer.AttachRenderbuffer(new Renderbuffer(texName, RenderbufferStorage.Depth24Stencil8), FramebufferAttachment.DepthStencilAttachment);
                        continue;
                    }

                    default:
                        throw new NotImplementedException();
                    }

                    framebuffer.AttachRenderTexture(new RenderTexture(texName, Screen.Width, Screen.Height, textureFormat: tex.format));

                    Rendering.CheckFramebufferStatus();
                }

                framebuffers.Add(framebuffer);
            }
        }
Пример #2
0
        public void AttachRenderbuffer(Renderbuffer renderbuffer, FramebufferAttachment?attachmentType = null)
        {
            Bind(this);

            var attachment = attachmentType ?? nextDefaultAttachment++;

            GL.FramebufferRenderbuffer(FramebufferTarget.Framebuffer, attachment, RenderbufferTarget.Renderbuffer, Id);

            Rendering.CheckFramebufferStatus();

            ArrayUtils.Add(ref renderbuffers, renderbuffer);

            var drawBuffersEnum = (DrawBuffersEnum)attachment;

            if (Enum.IsDefined(typeof(DrawBuffersEnum), drawBuffersEnum))
            {
                ArrayUtils.Add(ref drawBuffers, drawBuffersEnum);
            }
        }