private void OnSizeChanged()
        {
            SetSizeFromHost();
            var w = _roundedWidth;
            var h = _roundedHeight;

            GLWindowBuilder.ResizeNativeWindow(_windowHandle, w, h);

            _dibSection.Resize(w, h, _bitDepth);

            DestroyFramebuffers();

            BindBuffers();

            GL.glViewport(0, 0, w, h);

            if (w <= 0 || h <= 0)
            {
                return;
            }

            GL.glMatrixMode(GL.PROJECTION);
            GL.glLoadIdentity();

            GL.gluPerspective(45.0f, w / (Single)h, 0.1f, 100.0f);

            GL.glMatrixMode(GL.MODELVIEW);

            GL.glLoadIdentity();
        }
Beispiel #2
0
        public OpenGLPanel(IVisualElement view,
                           IStyleContext styleContext)
            : base(view, styleContext)
        {
            var bldr    = new GLWindowBuilder("OpenGLSurface");
            var boot    = new GLBootStrapper(bldr);
            var context = boot.GetContext(this);

            var fontProvider = GLBootStrapper.GetFontProvider(context);
            var kit          = new OpenGLRenderKit(fontProvider, context, styleContext, new GLImageProvider());

            var renderer = new PanelRenderer(this, context);
            var _        = new PanelUpdater(Render, kit, renderer, boot.Scheduler);
        }
        public GLWindowsContext(IHost viewHost,
                                OpenGLVersion glVersion,
                                GLWindowBuilder windowBuilder,
                                Task <IntPtr> deviceContextPromise,
                                Byte bitDepth = 32)
        {
            _dibSection    = new DIBSection();
            _delegateCache = new DelegateCache();
            _currentSize   = new Size(0, 0);
            _windowBuilder = windowBuilder;

            _viewHost = viewHost;
            _viewHost.AvailableSizeChanged += OnHostSizeChanged;

            _bitDepth = bitDepth;
            _requestedOpenGLVersion = glVersion;

            deviceContextPromise.ContinueWith(OnDeviceContextAvailable);
        }