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(); }
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); }