Example #1
0
        internal RenderTexture(IDevice device, int width, int height)
        {
            handle            = device.GenFramebuffer();
            underlyingTexture = new Texture(device, (uint[])null, width, height);
            device.BindFramebuffer(FramebufferTarget.Framebuffer, handle);
            device.FramebufferTexture2D(FramebufferTarget.Framebuffer, FramebufferAttachment.ColorAttachment0, TextureTarget.Texture2D,
                                        underlyingTexture.Handle, 0);
            // create a renderbuffer object for depth and stencil attachment (we won't be sampling these)

            depthHandle = device.GenRenderbuffer();
            device.BindRenderbuffer(RenderbufferTarget.Renderbuffer, depthHandle);
            device.RenderbufferStorage(RenderbufferTarget.Renderbuffer, RenderbufferStorage.Depth24Stencil8, width, height);
            device.FramebufferRenderbuffer(FramebufferTarget.Framebuffer, FramebufferAttachment.DepthStencilAttachment, RenderbufferTarget.Renderbuffer, depthHandle);

            device.BindFramebuffer(FramebufferTarget.Framebuffer, 0);
            this.device = device;
        }
Example #2
0
 /// <summary>
 /// Sets current render texture.
 /// call only from render thread
 /// </summary>
 /// <param name="renderTexture">render texture or null, then it resets to back buffer</param>
 public void SetRenderTexture(RenderTexture renderTexture, int destFramebuffer)
 {
     if (renderTexture == null)
     {
         device.BindFramebuffer(FramebufferTarget.Framebuffer, destFramebuffer);
     }
     else
     {
         renderTexture.ActivateFrameBuffer();
     }
     //RenderTargetView view = renderTexture == null ? renderTargetView : renderTexture.TargetView;
     //device.ImmediateContext.OutputMerger.SetTargets(depthStencilView, view);
 }
Example #3
0
 public void ActivateFrameBuffer()
 {
     device.BindFramebuffer(FramebufferTarget.Framebuffer, handle);
     device.Viewport(0, 0, (int)Width, (int)Height);
 }