close
新增主控台應用程式
輸入關鍵字”openTK”
安裝後,在你專案的參考中應該會出現OpenTK套件
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視窗
輸入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: }執行畫面如下:
加入參考 System.Drawing
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: }執行畫面如下: 目前還看不出顏色效果
仿照剛才OnLoad,再次我們覆寫OnRenderFrame
1: protected override void OnRenderFrame(FrameEventArgs e)
2: {3: base.OnRenderFrame(e);
4: GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit); 5: SwapBuffers(); 6: }執行畫面如下: 目前顏色效果發生作用
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: }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: }參考資料:
1. OpenTK Tutorial 1 - Opening Windows and Drawing a Triangle
全站熱搜











留言列表
