OpenGL con Gambas

Éste tutorial pretende ser una especie de receta rápida para comenzar a dibujar con OpenGL en Gambas3. No es una guía exhaustiva, pero el lector avispado encontrará similitudes con otros modos de dibujo, como Cairo, SDL, Paint o Draw, también parte de Gambas, y le será sencillo continuar experimentando con los métodos aquí presentados. Para hacerse una idea de la potencia de programar con OpenGL en Gambas, sólo hay que ver alguno de los proyectos desarrollados por Kevin Fishburne: http://bit.do/bJZSx

Todos los créditos del tutorial son para el usuario de los Foros de Gambas tercoIDE, que ha ido publicando los pasos a través del tema OpenGL, Tutoriales en el que amablemente el usuario Shell le invitaba (o le retaba?) a comenzar…

Para comenzar a familiarizarnos, vamos a realizar un dibujo en 2D. Puede sonar tonto, porque ¿para qué queremos dibujar en 2D cuando OGL se pensó para el dibujo en 3D? Bueno, por algo hay que empezar y si es lo más sencillo, mucho mejor:

  1. Abrimos el IDE de Gambas y creamos un proyecto gráfico
  2. Agregamos el componente gb.qt4.openGL (quizás tengamos que eliminar algún componente incompatible)
  3. Desde la pestaña 'Special' de los controles, insertamos un GLArea en nuestro formulario
  4. Insertamos el siguiente código en nuestro formulario:
ejemplo_2d.class
' gambas class file
 
Public Sub Form_Resize()
 
    gl.Viewport(0, 0, GLArea1.W, GLArea1.H)  'esto le dice a GL adonde debe dibujar
 
End
 
 
Public Sub GLArea1_Draw()  
 
    'establecemos el color hasta nuevo aviso
    gl.Color3f(255, 0, 0)  
 
    gl.Begin(gl.TRIANGLES)  'dibujamos triángulos hasta nuevo aviso
 
    gl.Vertex2i(0, 0) 'el punto 0,0 no esta en arriba a la izquierda, para openGL está en el medio!!!
    gl.Vertex2i(1, 0) ' 1 no es pixels, las coordenadas van de -1 a 1 , o sea, para eje X, 1 de openGL es GLArea1.width/2
    gl.Vertex2i(0, 1) ' idem para la coordenada Y
 
    gl.Color3f(0, 255, 0) 'verde hasta nuevo aviso, como verán puede estar dentro o fuera de los gl.Begin() - gl.End
 
    gl.Vertex2i(0, 0) 
    gl.Vertex2i(-1, 0) 
    gl.Vertex2i(0, -1)  
 
    gl.End  'esto es similar al Paint, todo se encierra entre Begin-End  
 
End

Los que hayan dibujado antes con la clase Paint o Draw, se darán cuenta de la similitud en cuanto a la forma de encerrar los métodos de dibujo entre .Begin() y .End(). Hay otras funciones, por ejemplo los que establecen un color o una escala, que no es necesario que vayan entre dichos métodos.

A tener en cuenta: El sistema de coordenadas en OGL no es el habitual cuyo origen XY está situado en la esquina superior izquierda, sino el punto central de un eje cartesiano. Además, los límites de esas coordenadas se encuentran únicamente entre -1 y 1, por lo que para dibujar con cierta precisión van a hacer falta otros métodos y algo de ingenio como veremos más adelante.

Por hacer

Por hacer

Por hacer

This website uses cookies for visitor traffic analysis. By using the website, you agree with storing the cookies on your computer.More information