Added QuickStart project.
This commit is contained in:
parent
11f194ac73
commit
1031f0c10c
1 changed files with 93 additions and 0 deletions
93
Source/QuickStart/Game.cs
Normal file
93
Source/QuickStart/Game.cs
Normal file
|
@ -0,0 +1,93 @@
|
|||
using System;
|
||||
using System.Drawing;
|
||||
|
||||
using OpenTK;
|
||||
using OpenTK.Graphics;
|
||||
using OpenTK.Graphics.OpenGL;
|
||||
using OpenTK.Audio;
|
||||
using OpenTK.Audio.OpenAL;
|
||||
using OpenTK.Input;
|
||||
|
||||
namespace StarterKit
|
||||
{
|
||||
class Game : GameWindow
|
||||
{
|
||||
/// <summary>Creates a 800x600 window with the specified title.</summary>
|
||||
public Game()
|
||||
: base(800, 600, GraphicsMode.Default, "OpenTK Quick Start Sample")
|
||||
{
|
||||
VSync = VSyncMode.On;
|
||||
}
|
||||
|
||||
/// <summary>Load resources here.</summary>
|
||||
/// <param name="e">Not used.</param>
|
||||
public override void OnLoad(EventArgs e)
|
||||
{
|
||||
GL.ClearColor(System.Drawing.Color.MidnightBlue);
|
||||
GL.Enable(EnableCap.DepthTest);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Called when your window is resized. Set your viewport here. It is also
|
||||
/// a good place to set up your projection matrix (which probably changes
|
||||
/// along when the aspect ratio of your window).
|
||||
/// </summary>
|
||||
/// <param name="e">Contains information on the new Width and Size of the GameWindow.</param>
|
||||
protected override void OnResize(EventArgs e)
|
||||
{
|
||||
GL.Viewport(ClientRectangle);
|
||||
|
||||
Matrix4 projection = Matrix4.CreatePerspectiveFieldOfView((float)Math.PI / 4, Width / (float)Height, 1.0f, 64.0f);
|
||||
GL.MatrixMode(MatrixMode.Projection);
|
||||
GL.LoadMatrix(ref projection);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Called when it is time to setup the next frame. Add you game logic here.
|
||||
/// </summary>
|
||||
/// <param name="e">Contains timing information for framerate independent logic.</param>
|
||||
protected override void OnUpdateFrame(FrameEventArgs e)
|
||||
{
|
||||
if (Keyboard[Key.Escape])
|
||||
Exit();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Called when it is time to render the next frame. Add your rendering code here.
|
||||
/// </summary>
|
||||
/// <param name="e">Contains timing information.</param>
|
||||
protected override void OnRenderFrame(FrameEventArgs e)
|
||||
{
|
||||
GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
|
||||
|
||||
Matrix4 modelview = Matrix4.LookAt(Vector3.Zero, Vector3.UnitZ, Vector3.UnitY);
|
||||
GL.MatrixMode(MatrixMode.Modelview);
|
||||
GL.LoadMatrix(ref modelview);
|
||||
|
||||
GL.Begin(BeginMode.Triangles);
|
||||
|
||||
GL.Color3(Color.Yellow); GL.Vertex3(-1.0f, -1.0f, 4.0f);
|
||||
GL.Color3(Color.Red); GL.Vertex3(1.0f, -1.0f, 4.0f);
|
||||
GL.Color3(Color.LightCyan); GL.Vertex3(0.0f, 1.0f, 4.0f);
|
||||
|
||||
GL.End();
|
||||
|
||||
SwapBuffers();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The main entry point for the application.
|
||||
/// </summary>
|
||||
[STAThread]
|
||||
static void Main()
|
||||
{
|
||||
// The 'using' idiom guarantees proper resource cleanup.
|
||||
// We request 30 UpdateFrame events per second, and unlimited
|
||||
// RenderFrame events (as fast as the computer can handle).
|
||||
using (Game game = new Game())
|
||||
{
|
||||
game.Run(30.0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue