Пример #1
0
        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);
        }
Пример #2
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);
            }
        }
Пример #3
0
        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;
                }
            }
        }