public void SurfaceChanged(ISurfaceHolder holder, Format format, int w, int h) { log("SurfaceChanged"); callMakeCurrent = true; Width = w; Height = h; // Surface size or format has changed surfaceRect = holder.SurfaceFrame; size = new Size(surfaceRect.Right - surfaceRect.Left, surfaceRect.Bottom - surfaceRect.Top); if (OpenTK.Graphics.GraphicsContext.CurrentContextHandle.Handle != IntPtr.Zero && RenderOnUIThread) { GLCalls.Viewport(0, 0, size.Width, size.Height); GLCalls.Scissor(0, 0, size.Width, size.Height); } OnResize(EventArgs.Empty); }
protected override void CreateFrameBuffer() { EnsureUndisposed(); int major = 0, minor = 0; switch (ContextRenderingApi) { case GLVersion.ES1: major = 1; minor = 1; break; case GLVersion.ES2: major = 2; minor = 0; break; case GLVersion.ES3: major = 3; minor = 0; break; default: throw new ArgumentException("Unsupported ContextRenderingApi version: " + ContextRenderingApi); } GraphicsMode = GraphicsMode.Default; GraphicsContext = new GraphicsContext(GraphicsMode, WindowInfo, major, minor, GraphicsContextFlags.Embedded); GraphicsContext.MakeCurrent(WindowInfo); GraphicsContext.LoadAll(); gl = GLCalls.GetGLCalls(ContextRenderingApi); if (renderOnUIThread) { MakeCurrent(); } }