参考:http://dreamstatecoding.blogspot.com/2017/01/opengl-4-with-opentk-in-c-part-1.html
http://www.cnblogs.com/podolski/p/7406628.html
本节在OpenTK学习笔记(2)-工作窗口的三种方法创建方法(winfrom下类的形式创建)基础上配置初始窗体
using System; using System.Collections.Generic; using System.Linq; using System.Text; using OpenTK; using OpenTK.Graphics; using OpenTK.Graphics.OpenGL4; using OpenTK.Input; namespace opentk2 { class MainForm : GameWindow { //int width, int height, GraphicsMode mode, string title, GameWindowFlags options, DisplayDevice device, int major, int minor, GraphicsContextFlags flags, IGraphicsContext sharedContext, bool isSingleThreaded //初始窗口状态设置 public MainForm() : base(300, 300, GraphicsMode.Default, "第一个窗口", GameWindowFlags.Default, DisplayDevice.Default, 4, 0, GraphicsContextFlags.ForwardCompatible) { Title += ": OpenGL Version: " + GL.GetString(StringName.Version); } //调整窗口时重置视图Viewport protected override void OnResize(EventArgs e) { GL.Viewport(0, 0, Width, Height); } //窗口加载时 初始化一次 protected override void OnLoad(EventArgs e) { CursorVisible = true; } //每帧更新内容 protected override void OnUpdateFrame(FrameEventArgs e) { HandleKeyboard(); } //通过按Escape键轻松关闭窗口 Esc键 private void HandleKeyboard() { var keyState = Keyboard.GetState(); if (keyState.IsKeyDown(Key.Escape)) { Exit(); } } //最后一帧 Title记录共进行了多少帧 protected override void OnRenderFrame(FrameEventArgs e) { Title = $"(Vsync: {VSync}) FPS: {1f / e.Time:0}"; Color4 backColor; backColor.A = 1.0f; backColor.R = 0.1f; backColor.G = 0.1f; backColor.B = 0.3f; GL.ClearColor(backColor); GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit); SwapBuffers(); } } }
注:非原创,作为自己学习的记录