Screenshot
Using EZ GL2D in your projects is quite easy. Just follow the instructions below...
1. Download and install OpenTK anywhere in your PC. I installed mine in "c:/programming/opentk/".
2. Open and make new project.
3. Choose "Console Application" and name it any name you like.
4. Add references for both OpenTK and Windows.Drawing.
5. In "Projects", select "Add Existing Item" then add "GL2D.cs".
7. Navigate your drive and add any power of 2 sized image in the /bin/debug and bin/release folders in your current project(I used "plant.png").
8. Paste this code and run...
using System; using System.Collections.Generic; using System.Threading; using System.Drawing; using System.Drawing.Imaging; using System.IO; using OpenTK; using OpenTK.Graphics; using OpenTK.Graphics.OpenGL; using EZGL2D; namespace EZGL2DexampleBasic { public class GL2Dexample : GameWindow // inherit the GameWindow class { const int SCREEN_WIDTH = 800; // screen dimension const int SCREEN_HEIGHT = 600; GL2D.SpriteGL plantSprite; // our sprite // Init screen public GL2Dexample() : base(SCREEN_WIDTH, SCREEN_HEIGHT) { } // this is where you would initialize everything // like loading textures, setting up OpenGL screen, etc. protected override void OnLoad(EventArgs e) { base.OnLoad(e); VSync = VSyncMode.On; // force vertical synching Title = "EZGL2D is too easy to use it hurts!"; // set the title //WindowBorder = WindowBorder.Hidden; // hide the window // Load our sprite plantSprite = GL2D.LoadSprite("plant.png", (int)TextureMinFilter.Linear); } protected override void OnResize(EventArgs e) { base.OnResize(e); GL2D.Screen2D(Width, Height); // reset the screen every resize } // this is where all your game logic // should be done. (Input, Entity movement, collisions, etc) protected override void OnUpdateFrame(FrameEventArgs e) { base.OnUpdateFrame(e); // get input if (Keyboard[OpenTK.Input.Key.Escape]) { this.Exit(); return; } } // This is where all rendering/drawing should be done protected override void OnRenderFrame(FrameEventArgs e) { base.OnRenderFrame(e); GL2D.ClearScreen(); // clear the screen GL2D.EnableAntialias(true); // smoothen the primitives GL2D.Begin2D(); // start 2D drawing mode // Draw boxes that get smaller continuously GL.Color4(0.0f, 0.7f, 0.5f, 1.0f); //cyan-ish Box for (int i = 0; i < 30; i++) { GL2D.Box(10 + i * 10, 10 + i * 10, (Width - 10) - i * 10, (Height - 10) - i * 10); } // Draw a little box on the upper-left corner GL.Color4(1.0f, 0.7f, 0.5f, 1.0f); GL2D.BoxFilled(100, 100, 30, 40); // Draw a triangle on the lower-right corner GL.Color4(0.0f, 0.0f, 1.0f, 1.0f); GL2D.TriangleFilled(600, 400, 750, 500, 500, 550); // Draw some blue colored spokes GL.Color4(0.0f, 1.0f, 0.0f, 1.0f); for (int i = 0; i < 360; i += 10) { double angle = i * Math.PI/180; int x = (int)(Math.Cos(angle) * 200); int y = (int)(Math.Sin(angle) * 200); int cx = Width/2; int cy = Height/2; GL2D.Line(cx + x, cy + y, cx - x, cy - y); } // draw two simple sprites GL.Color4(1.0f, 1.0f, 1.0f, 1.0f); GL2D.BlendMode(GL2D.BLEND_MODE.GL2D_ALPHA); GL2D.SpriteRotateScale(85, 500, 0, 1, 1, GL2D.SpriteGL.FLIP_H, plantSprite); GL2D.SpriteRotateScale(Width-85, 100, 0, 1, 1, GL2D.SpriteGL.FLIP_NONE, plantSprite); GL2D.End2D(); this.SwapBuffers(); // copy what we draw to screen Thread.Sleep(1); // sleep so that we don't hog CPU } [STAThread] public static void Main() { using (GL2Dexample example = new GL2Dexample()) { example.Run(60); // run the game at 60 frames per second } } } }