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
全站熱搜