|
InfoJosep
www.infojosep.es
|
|
Menu Introducción primer programa Primitivas y atributos Transformaciones Proyecciones Iluminación Texturización Efectos Todos los Ejemplos
NUESTRO PRIMER PROGRAMA
Antes de todo vamos a indicar a visual basic donde puedes encontrar la librería OpenGl para visual basic 6 es (vbogl.tlb). La cual nos podemos bajar de aqui. Y para utilizar OpenGL con visual Basic 2008 utilizaremos las TAO que la podemos descargar de aquí. Primero de todo tenemos que instalar las TAO, si utilizáis Windows os podéis descargar el ejecutable que instalara las librerías.
Empezemos a programar!! bueno.. cada uno lo hace a su manera, yo he creado una clase a la que le llamo OGL pero tambien las podriamos hacer en un modulo normal. En esta clase defino 2 funciones una la inicialización de la ventana a la que le llamare InitOPENGL y otra Render que sera la encargada de dibujar nuestras escenas.
Vamos a ver estas dos funciones:
Inicialitzación
Public Sub InitOPENGL(ByVal ghDC As System.IntPtr) Dim pfd As Gdi.PIXELFORMATDESCRIPTOR hDc = ghDC PixelFormat = Gdi.ChoosePixelFormat(ghDC, pfd) If PixelFormat = 0 Then
End If If Not (Gdi.SetPixelFormat(ghDC, PixelFormat, pfd)) Then
End If hRC = Wgl.wglCreateContext(ghDC)
End If If Not (Wgl.wglMakeCurrent(ghDC, hRC)) Then
End If Inicializaciones() End Sub |
Render ( Renderizar )
Tenemos que definir una función que es la que contendra la escena que se va a dibujar, esta función restaurara el frame del buffer, yo definire esta función como Render .
Esta función se tiene que ejecutar dentro de un bucle para que se vaya actualizando nuestra animacion, ya sea un Timer o un bucle 'infinito' y controlar los eventos mediante DoEvents, este es el metodo que uso para los ejemplos.
Private Sub Render() Gl.glClear(Gl.GL_COLOR_BUFFER_BIT Or Gl.GL_DEPTH_BUFFER_BIT) 'AQUI DIBUJAREMOS NUESTRA ESCENA Application.DoEvents() Gdi.SwapBuffers(hDc) End Sub Y en el formulario ponemos un PictureBox. El PictureBox sera nuestra pantalla para dibujar, si quisieramos dibujar en otro objeto lo podemos hacer si el objecto contiene el Handle, por ejemplo los formularios tienen Handle por lo que tambien podriamos dibujar directamente en el formulario. |