Bolche's picture

Primer Ejemplo triangulo

using System;
using System.Drawing;
 
using OpenTK;
using OpenTK.Input;
using OpenTK.Graphics.OpenGL;
using Tao.OpenGl;
 
namespace opentk_triangulo
{
	public class ventana : GameWindow
	{
		public void teclado(object lanzador, KeyboardKeyEventArgs e)
		{
			if(e.Key == Key.Escape)
			{
				base.Exit();
			}
		}
 
		public void iniciar_OpenGL()
		{
			GL.ClearColor(Color.CornflowerBlue);
			GL.Viewport(0,0,640,480);
			GL.MatrixMode(MatrixMode.Projection);
			GL.LoadIdentity();
			GL.Ortho(-5.0, 5.0,-5.0, 5.0, 0.0, 5);
		}
 
		public ventana(): base(640,480)
		{
			Keyboard.KeyDown += teclado;
		}
 
		protected override void OnLoad(EventArgs e)
		{
			// en este espacio se cargan datos desde el
			// disco como archivos, imagenes o musica
		}
 
		protected override void OnUpdateFrame(FrameEventArgs e)
		{
			// Este es el lugar apropiao para manejar la
			// posicion de los objetos, correr la IA o fisica
		}
 
		protected override void OnRenderFrame(FrameEventArgs e)
		{
			// Aqui se realiza la graficacion, Tipicamente se inicia con 
			// la llamada GL.Clear() y termina con la llamada SwapBuffer
			iniciar_OpenGL();
			GL.Clear(ClearBufferMask.ColorBufferBit);
			triangulo();
			base.SwapBuffers();
		}
 
		protected override void OnResize(EventArgs e)
		{
			// Este metodo es llamado cada vez que cambia de tamaño
			// la ventana, en modo FullScreen es llamado una vez,
			// a menudo es mas requerido en modo ventana
		}
 
		public void triangulo()
		{
				GL.Begin(BeginMode.TriangleFan);
					GL.Color3(Color.Red);
					GL.Vertex3(0.0f, 1.0f, 0.0);
 
					GL.Color3(0.0, 1.0, 0.0);
					GL.Vertex3(-1.0f, -1.0f, 0.0);
 
					GL.Color3(Color.Blue);
					GL.Vertex3(1.0f,-1.0f, 0.0);
 
					GL.Color3(Color.Red);
					GL.Vertex3(0.0, 1.0, 0.0);
				GL.End();
		}
 
 
		class MainClass
		{
			public static void Main(string[] args)
			{
				using(ventana vent = new ventana())
				{
					vent.Title = String.Format("Triangulo");
					vent.Run();
				}
			}
		}
	}