Esempio n. 1
0
        public void Create(int width, int height)
        {
            if (glGenFramebuffersEXT == null)
            {
                glGenFramebuffersEXT         = OpenGL.GetDelegateFor <OpenGL.glGenFramebuffersEXT>();
                glBindFramebufferEXT         = OpenGL.GetDelegateFor <OpenGL.glBindFramebufferEXT>();
                glGenRenderbuffersEXT        = OpenGL.GetDelegateFor <OpenGL.glGenRenderbuffersEXT>();
                glBindRenderbufferEXT        = OpenGL.GetDelegateFor <OpenGL.glBindRenderbufferEXT>();
                glRenderbufferStorageEXT     = OpenGL.GetDelegateFor <OpenGL.glRenderbufferStorageEXT>();
                glFramebufferRenderbufferEXT = OpenGL.GetDelegateFor <OpenGL.glFramebufferRenderbufferEXT>();
                glDeleteRenderbuffersEXT     = OpenGL.GetDelegateFor <OpenGL.glDeleteRenderbuffersEXT>();
                glDeleteFramebuffersEXT      = OpenGL.GetDelegateFor <OpenGL.glDeleteFramebuffersEXT>();
            }
            //  First, create the frame buffer and bind it.
            glGenFramebuffersEXT(1, this.framebufferId);
            glBindFramebufferEXT(OpenGL.GL_FRAMEBUFFER, this.framebufferId[0]);

            //	Create the color render buffer and bind it, then allocate storage for it.
            glGenRenderbuffersEXT(1, this.colorRenderBufferId);
            glBindRenderbufferEXT(OpenGL.GL_RENDERBUFFER, this.colorRenderBufferId[0]);
            glRenderbufferStorageEXT(OpenGL.GL_RENDERBUFFER, OpenGL.GL_RGBA, width, height);

            //	Create the depth render buffer and bind it, then allocate storage for it.
            glGenRenderbuffersEXT(1, this.depthRenderBufferId);
            glBindRenderbufferEXT(OpenGL.GL_RENDERBUFFER, this.depthRenderBufferId[0]);
            glRenderbufferStorageEXT(OpenGL.GL_RENDERBUFFER, OpenGL.GL_DEPTH_COMPONENT24, width, height);

            //  Set the render buffer for color and depth.
            glFramebufferRenderbufferEXT(OpenGL.GL_FRAMEBUFFER, OpenGL.GL_COLOR_ATTACHMENT0,
                                         OpenGL.GL_RENDERBUFFER, this.colorRenderBufferId[0]);
            glFramebufferRenderbufferEXT(OpenGL.GL_FRAMEBUFFER, OpenGL.GL_DEPTH_ATTACHMENT,
                                         OpenGL.GL_RENDERBUFFER, this.depthRenderBufferId[0]);
        }
Esempio n. 2
0
        /// <summary>
        /// Create, update, use and delete a renderbuffer object.
        /// </summary>
        /// <param name="width"></param>
        /// <param name="height"></param>
        /// <param name="internalformat"></param>
        /// <param name="bufferType"></param>
        public Renderbuffer(int width, int height, uint internalformat, RenderbufferType bufferType)
        {
            if (glGenRenderbuffers == null)
            {
                glGenRenderbuffers    = OpenGL.GetDelegateFor <OpenGL.glGenRenderbuffersEXT>();
                glBindRenderbuffer    = OpenGL.GetDelegateFor <OpenGL.glBindRenderbufferEXT>();
                glRenderbufferStorage = OpenGL.GetDelegateFor <OpenGL.glRenderbufferStorageEXT>();
            }

            this.Width      = width;
            this.Height     = height;
            this.BufferType = bufferType;

            glGenRenderbuffers(1, renderbuffer);
            glBindRenderbuffer(OpenGL.GL_RENDERBUFFER, renderbuffer[0]);
            glRenderbufferStorage(OpenGL.GL_RENDERBUFFER,
                                  internalformat,// TODO: add comment about OpenGL.GL_DEPTH24_STENCIL8, OpenGL.GL_RGBA,
                                  width, height);
        }