public void MakeCurrent() { if (mContext.IsCurrent == false) { mContext.MakeCurrent(mWindowInfo); } GL.Viewport(0, 0, Width, Height); mDisplay.SetupGLOrtho(Rectangle.FromLTRB(0, Height, Width, 0)); }
public override void BeginRender() { if (mWindow.Context.VSync != mDisplay.VSync) { mWindow.Context.VSync = mDisplay.VSync; } MakeCurrent(); mDisplay.SetupGLOrtho(Rectangle.FromLTRB(0, 0, Width, Height)); }
public override void BeginRender() { GL.Viewport(0, 0, SurfaceWidth, SurfaceHeight); mDisplay.SetupGLOrtho(Rectangle.FromLTRB(0, SurfaceHeight, SurfaceWidth, 0)); if (mDisplay.SupportsFramebuffer) { // generate the frame buffer GL.Ext.GenFramebuffers(1, out mFramebufferID); GL.Ext.BindFramebuffer(FramebufferTarget.FramebufferExt, mFramebufferID); // generate a depth buffer to render to GL.Ext.GenRenderbuffers(1, out mDepthBuffer); GL.Ext.BindRenderbuffer(RenderbufferTarget.RenderbufferExt, mDepthBuffer); // hack here because RenderbufferStorage enum is incomplete. GL.Ext.RenderbufferStorage(RenderbufferTarget.RenderbufferExt, (RenderbufferStorage)OTKPixelFormat.DepthComponent, mTextureSize.Width, mTextureSize.Height); // attach the depth buffer GL.Ext.FramebufferRenderbuffer(FramebufferTarget.FramebufferExt, FramebufferAttachment.DepthAttachmentExt, RenderbufferTarget.RenderbufferExt, mDepthBuffer); // attach the texture GL.Ext.FramebufferTexture2D(FramebufferTarget.FramebufferExt, FramebufferAttachment.ColorAttachment0Ext, TextureTarget.Texture2D, mTextureID, 0); FramebufferErrorCode code = GL.Ext.CheckFramebufferStatus(FramebufferTarget.FramebufferExt); if (code != FramebufferErrorCode.FramebufferCompleteExt) { throw new AgateException( "Could not complete framebuffer object."); } GL.Ext.BindFramebuffer(FramebufferTarget.FramebufferExt, mFramebufferID); GL.PushAttrib(AttribMask.ViewportBit); } else { // clear the framebuffer and draw this texture to it. GL.ClearColor(0, 0, 0, 0); GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit); GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Linear); GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Linear); Draw(); GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Linear); GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Linear); } }