internal static int GlTargetToFramebufferTargetIndex(glFramebuffer.BindTarget Target) { switch (Target) { case glFramebuffer.BindTarget.GL_FRAMEBUFFER: return(0); case glFramebuffer.BindTarget.GL_READ_FRAMEBUFFER: return(1); case glFramebuffer.BindTarget.GL_DRAW_FRAMEBUFFER: return(2); } return(0); }
internal void FramebufferTexture(glFramebuffer framebuffer, glFramebuffer.BindTarget Target, glFramebuffer.Attachment attachment, glTexture texture, int level) { int indexTarget = GlTargetToFramebufferTargetIndex(Target); lock (_Framebuffers) { if (_Framebuffers[indexTarget] != framebuffer) { throw new Exception("Invalid bind target. The frambeuffer must be bound to this target first"); } _glFramebufferTexture((int)Target, (int)attachment, texture.Handle, level); } }
internal void BindFramebuffer(glFramebuffer Framebuffer, glFramebuffer.BindTarget Target) { int indexTarget = GlTargetToFramebufferTargetIndex(Target); lock (_Framebuffers) { if (Framebuffer == null) { _glBindFramebuffer((int)Target, 0); _Framebuffers[indexTarget] = null; } else { _glBindFramebuffer((int)Target, Framebuffer.Handle); _Framebuffers[indexTarget] = Framebuffer; } } }