Установить размер OpenTK.glcontrol на весь экран - c # - PullRequest
0 голосов
/ 08 октября 2018

В своей форме я использую glcontrol of opentk для передачи видеокадров.Это работает хорошо.Теперь я хочу установить ширину и высоту glcontrol на весь экран.Как мне этого добиться?При перетаскивании glcontrol в дизайн формы его размер отображается как 783, 420. На самом деле этот размер отображается, когда я запускаю приложение.Как я могу изменить это на весь экран?Изменение значения области просмотра, кажется, не влияет на это.в чем причина?

 public void Render()
    {
        GL.BindFramebuffer(FramebufferTarget.Framebuffer, 0); // use the visible framebuffer
        GL.ClearColor(0.5f, 0.5f, 0.55f, 0.0f);
        GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);

        GL.Viewport(new Rectangle(0, 0, 1920, 1080));
        //GL.Viewport(ClientRectangle.X, ClientRectangle.Y, ClientRectangle.Width, ClientRectangle.Height);

        GL.MatrixMode(MatrixMode.Projection);
        GL.PushMatrix();
        GL.LoadIdentity();
        //GL.Ortho(0, 1920, 0, 1080, 0, 1);

        GL.MatrixMode(MatrixMode.Modelview);
        GL.PushMatrix();
        GL.LoadIdentity();

        GL.Disable(EnableCap.Lighting);

        GL.Enable(EnableCap.Texture2D);

        GL.ActiveTexture(TextureUnit.Texture0);

        if (videoFrame != null)
            lock (videoFrame)
            {
                if (videoTexture != -1)
                GL.DeleteTextures(1, ref videoTexture);
                videoTexture = LoadTexture(videoFrame);
                GL.BindTexture(TextureTarget.Texture2D, videoTexture);
                videoFrame.Dispose();
                videoFrame = null;
            }
        GC.Collect();

        //GL.Begin(PrimitiveType.Quads);

        //GL.TexCoord2(0, 1);
        //GL.Vertex3(0, 0, 0);

        //GL.TexCoord2(1, 1);
        //GL.Vertex3(1920, 0, 0);

        //GL.TexCoord2(1, 0);
        //GL.Vertex3(1920, 1080, 0);

        //GL.TexCoord2(0, 0);
        //GL.Vertex3(0, 1080, 0);

        //GL.End();

        RunShaders();
        GL.Disable(EnableCap.Texture2D);
        GL.PopMatrix();
        GL.MatrixMode(MatrixMode.Projection);
        GL.PopMatrix();
        GL.MatrixMode(MatrixMode.Modelview);

        ErrorCode ec = GL.GetError();
        if (ec != 0)
            System.Console.WriteLine(ec.ToString());
        Console.Read();
        glControl.SwapBuffers();
    }
...