Beispiel #1
0
        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);
        }
Beispiel #2
0
        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();
            }
        }