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