close

新增主控台應用程式

image


image


輸入關鍵字”openTK”

image

安裝後,在你專案的參考中應該會出現OpenTK套件

image


1. 加入命名空間OpenTK

2. 新增一個Game類別繼承GameWindow

   1: using System;
   2: using System.Collections.Generic;
   3: using System.Linq;
   4: using System.Text;
   5: using System.Threading.Tasks;
   6: using OpenTK;
   7:  
   8: namespace OpenTKTutorial1
   9: {
  10:     class Program
  11:     {
  12:         static void Main(string[] args)
  13:         {
  14:         }
  15:     }
  16:     class Game:GameWindow
  17:     {
  18:  
  19:     }
  20: }

產生Game實體,其中30.0表示更新頻率

   1: class Program
   2: {
   3:     static void Main(string[] args)
   4:     {
   5:         using (Game game = new Game())
   6:         {
   7:             game.Run(30.0);
   8:         }
   9:     }
  10: }

  執行後會產生一個OpenTK Game視窗

image


輸入override,按下空白鍵後會跳出符合的下拉清單,例如OnLoad

   1: class Game:GameWindow
   2: {
   3:     protected override void OnLoad(EventArgs e)
   4:     {
   5:         base.OnLoad(e);
   6:     }
   7: }

改變標題,可以在載入階段修改屬性

   1: class Game:GameWindow
   2: {
   3:     
   4:     protected override void OnLoad(EventArgs e)
   5:     {
   6:         Title = "你好嗎?";
   7:         base.OnLoad(e);
   8:     }
   9: }

執行畫面如下:

image

加入參考 System.Drawing


image


   1: using System.Text;
   2: using System.Threading.Tasks;
   3: using OpenTK;
   4: using OpenTK.Graphics.OpenGL;
   5: using System.Drawing;
   6:  
   7: namespace OpenTKTutorial1
   8: {
   9:     class Program
  10:     {
  11:         static void Main(string[] args)
  12:         {
  13:             using (Game game = new Game())
  14:             {
  15:                 game.Run(30.0);
  16:             }
  17:         }
  18:     }
  19:     class Game:GameWindow
  20:     {
  21:         
  22:         protected override void OnLoad(EventArgs e)
  23:         {
  24:             base.OnLoad(e);
  25:             Title = "你好嗎?";
  26:             GL.ClearColor(Color.AliceBlue);
  27:         }
  28:  
  29:     }
  30: }

執行畫面如下: 目前還看不出顏色效果

image


仿照剛才OnLoad,再次我們覆寫OnRenderFrame

   1: protected override void OnRenderFrame(FrameEventArgs e)
   2: {
   3:    base.OnRenderFrame(e);
   4:    GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
   5:    SwapBuffers();
   6: }

執行畫面如下: 目前顏色效果發生作用

image


   1: protected override void OnRenderFrame(FrameEventArgs e)
   2: {
   3:     base.OnRenderFrame(e);
   4:     GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
   5:  
   6:  
   7:     GL.Begin(BeginMode.Triangles);
   8:  
   9:     GL.Vertex3(-1.0f, -1.0f, 4.0f);
  10:  
  11:     GL.Vertex3(1.0f, -1.0f, 4.0f);
  12:  
  13:     GL.Vertex3(0.0f, 1.0f, 4.0f);
  14:  
  15:     GL.End();
  16:  
  17:     Matrix4 modelview = Matrix4.LookAt(Vector3.Zero, Vector3.UnitZ, Vector3.UnitY);
  18:     GL.MatrixMode(MatrixMode.Modelview);
  19:     GL.LoadMatrix(ref modelview);
  20:  
  21:     SwapBuffers();
  22: }


image


   1: protected override void OnRenderFrame(FrameEventArgs e)
   2:   {
   3:       base.OnRenderFrame(e);
   4:       GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
   5:  
   6:  
   7:       GL.Begin(BeginMode.Triangles);
   8:  
   9:       // 三角形頂點座標
  10:       GL.Vertex3(-1.0f, -1.0f, 4.0f);
  11:  
  12:       GL.Vertex3(1.0f, -1.0f, 4.0f);
  13:  
  14:       GL.Vertex3(0.0f, 1.0f, 4.0f);
  15:  
  16:       // 塗上漸層色
  17:       GL.Color3(1.0f, 0.0f, 0.0f);
  18:       GL.Vertex3(-1.0f, -1.0f, 4.0f);
  19:  
  20:       GL.Color3(0.0f, 1.0f, 0.0f);
  21:       GL.Vertex3(1.0f, -1.0f, 4.0f);
  22:  
  23:       GL.Color3(0.0f, 0.0f, 1.0f);
  24:       GL.Vertex3(0.0f, 1.0f, 4.0f);
  25:  
  26:       GL.End();
  27:  
  28:       Matrix4 modelview = Matrix4.LookAt(Vector3.Zero, Vector3.UnitZ, Vector3.UnitY);
  29:       GL.MatrixMode(MatrixMode.Modelview);
  30:       GL.LoadMatrix(ref modelview);
  31:  
  32:       // 將buffer轉換至螢幕畫面
  33:       SwapBuffers();
  34:   }


image









參考資料:

1. OpenTK Tutorial 1 - Opening Windows and Drawing a Triangle

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 me1237guy 的頭像
    me1237guy

    天天向上

    me1237guy 發表在 痞客邦 留言(0) 人氣()