Requisitos previos:
-Entorno de desarrollo de tu elección, en mi caso: Microsoft Visual C# 2010 Express
-SDK de OpenTK que lo puedes descargar de http://www.opentk.com/
Lo primero será crear un nuevo proyecto de Windows Forms con el entorno de desarrollo que hayas escogido. Os habrá creado un formulario por defecto (Form1) que deberás eliminar pues no es lo que vamos a usar.
Ahora agrega a las referencias del proyecto OpenTK.dll que lo encontrarás en la ruta donde hayas instalado OpenTK en \OpenTK\1.0\Binaries\OpenTK\Release\OpenTK.dll
Con esto, el proyecto estará listo para empezar a escribir código.
A la hora de trabajar con OpenTK, hay dos maneras de poder renderizar contenido, usando el GLControl que es un control que se puede usar en un formulario normal o usando el GameWindow. En los ejemplos de OpenTK se suele usar el GLControl pero yo me he decidido por el uso del GameWindow con los que podemos ganar un poco de rendimiento.
Para usar el GameWindow lo que haremos es crear una clase nueva que heredará de ésta, así podremos codificar los métodos necesarios para gestionar los eventos. Así que crea una clase, por ejemplo MainWindow.
Ahora inlcuiremos los using necesarios para trabajar cómodamente:
using OpenTK;
using OpenTK.Graphics.OpenGL;
using System.Drawing;
De esta manera ya podemos hacer que nuestra clase herede de GameWindow:
class MainWindow : OpenTK.GameWindow
El primer método que vamos a crear para nuestra clase sera el método que sobreescribirá el OnLoad de GameWindow, que se ejecutará al cargarse el control:
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
GL.ClearColor(Color.MidnightBlue);
}
Aquí tan solo hemos hecho dos cosas, por un lado ejecutar OnLoad en la clase base GameWindow y por otro designar el color MidnightBlue como el color que mostrará la ventana por defecto.
El siguiente método es el que nos permitirá mostrar cosas por pantalla:
protected override void OnRenderFrame(FrameEventArgs e)
{
GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
GL.End();
SwapBuffers();
}
En este método es donde se realiza el renderizado. Primero hacemos un Clear que resetea los buffers presentes, en este caso el de color y el de profundidad (éste lo explicaremos un poco más adelante). Después del clear vendrían las instrucciones de renderizado y después el método End para indicar que ya hemos terminado las llamadas OpenGL. Para terminar, llamamos a SwapBuffers que lo que hace es intercambiar el buffer trasero por el frontal (podéis buscar más información acerca de los buffers pero básicamente, trabajamos con 2 buffers, el frontal que es el que se muestra por pantalla y el trasero que es donde se renderiza, luego se intercambian de manera que evitamos efectos de 'tembleque de la pantalla').
Para que funcione nuestro proyecto tan solo nos queda modificar el Program.cs, eliminaremos todo el código de dentro del Main y incluiremos esto:
MainWindow doMain = new MainWindow();
doMain.Run();
Y con esto ya podríamos ejecutar nuestro primer proyecto que mostrará una bonita ventana con el fondo del color que le hayamos indicado en el OnLoad como ClearColor.
Hasta aquí el primer tutorial en el que hemos creado nuestra primera ventana y hemos tocado muy por encima alguno de los conceptos que más adelante explicaré con más calma.
Cualquier duda o problema, no dudes en comentar!
Me has sido de mucha ayuda compañero, es un simple Hola Mundo pero espero que acabe siendo un videojuego decente. Vengo de GDI+ y espero que OpenGL de mucho más de sí en entornos 3D y físicas.
ResponderEliminarVeo que tienes más tutos de OpenGL para C#, seguiré poco a poco cargándomelos todos.
Muchas gracias por compartir tus conocimientos. Saludos compañero! :D
¿Y tienes idea de como usar el GLControl o como ponerlo el render en Form con diseño?
ResponderEliminarbueno, la verdad me funciono con gamewindow, pero con GLControl no me sale.
Saludos ;)
Hola, el GLControl no debería ser ningún problema, yo mismo lo he usado en un par de proyectos.
EliminarTienes un ejemplo muy fácil en la página de OpenTK:
http://www.opentk.com/doc/chapter/2/glcontrol
Gracias, ya lo resolví, y si, debí instalar el Visual C# Express 2010, era muy compatible para los proyectos, seguiré aprendiendo con los tutoriales, saludos. ;)
EliminarAmigo gracias por compartir tus conocimientos, bendiciones (Y)!
ResponderEliminar