How to draw in a GLArea?

Post your Gambas programming questions here.
Post Reply
User avatar
jornmo
Site Admin
Posts: 224
Joined: Wednesday 21st September 2016 1:19pm
Location: Norway

How to draw in a GLArea?

Post by jornmo »

Hi!

Does anyone know how I can draw inside a GLArea? I tried some GL methods inside the GLArea's Draw event, but the area remains pitch black.
The farm has no examples, exept the ones using OpenGL combined with SDL, which is not what I want.
DuckDuckGo (ddg.gg) leaves me non the wiser as well...

I just want to experiment with some simple CAD drawing using OpenGL.
User avatar
jornmo
Site Admin
Posts: 224
Joined: Wednesday 21st September 2016 1:19pm
Location: Norway

Re: How to draw in a GLArea?

Post by jornmo »

I read some C++ examples and "figured it out".
' Gambas class file

Public Sub Form_Open()
  
  gl.ClearColor(0.0, 0.0, 0.0, 0.0)
  gl.Viewport(0, 0, 500, 500)
  gl.MatrixMode(gl.PROJECTION)
  gl.LoadIdentity()
  gl.Ortho(0, 500, 0, 500, 1, -1)
  gl.MatrixMode(gl.MODELVIEW)
  
End

Public Sub GLArea1_Draw()
  
  gl.Clear(gl.COLOR_BUFFER_BIT)
  gl.Begin(gl.LINES)
  gl.Vertex2i(-10, -10)
  gl.Vertex2i(250, 250)
  gl.End()
  gl.Flush()
  
End
User avatar
Quincunxian
Posts: 171
Joined: Sunday 25th June 2017 12:14am
Location: Western Australia

Re: How to draw in a GLArea?

Post by Quincunxian »

One of the best guides I found ages ago when I was experimenting with Open GL as from a guy called NeHe.
He wrote some of the examples for Gambas but like you, a search for "NeHe & Gambas" did not bring back much.

He does appear to have a bit more of a general site here.
and some legacy tutorials here but for windows - If you can translate from C to gambas it should provide some help.

Few posts on StackOverflow reference this as the best place to start.

I'm very interested in using OpenGL in Gambas.
I'm looking to be able to rotate in any dimension, a cluster of stars in a cubic area.
Also to display a simple textured wire frame of a item but again, from memory the G3 implementation did not have some of the more in-depth shader and texture processes translated when I was looking; but it was a few(several) years ago now.

Hope this helps.
Cheers - Quin.
I code therefore I am
User avatar
jornmo
Site Admin
Posts: 224
Joined: Wednesday 21st September 2016 1:19pm
Location: Norway

Re: How to draw in a GLArea?

Post by jornmo »

Hi Quin :)

Actually, NeHe is on the Farm. I used that for some insight on the GL code itself. But, it is cool seeing from where it came. Thanks!

It seeems when using the GLArea one needs to use .Begin() and .Flush() in addition to the code used in the NeHe app on the Farm. One also needs to be aware the the coordiante system is not '0, 0' in the top left corner. '0, 0' Is the middle of the screen. The coordinates are set in floats (there's probably a setting to get it in the normal mode. If not it is simple to write a function for that...), so the top left corner would be '-1, 1'.
User avatar
jornmo
Site Admin
Posts: 224
Joined: Wednesday 21st September 2016 1:19pm
Location: Norway

Re: How to draw in a GLArea?

Post by jornmo »

A good thing to notice is that 'Tracking' must be set to 'True' for the GLArea to receive MouseMove()ments.
User avatar
jornmo
Site Admin
Posts: 224
Joined: Wednesday 21st September 2016 1:19pm
Location: Norway

Re: How to draw in a GLArea?

Post by jornmo »

Quincunxian wrote: Sunday 17th March 2019 10:44pm
... from memory the G3 implementation did not have some of the more in-depth shader and texture processes translated when I was looking; but it was a few(several) years ago now.
It says in the documentation that the library/ies are fully supported as of now.
User avatar
Technopeasant
Posts: 140
Joined: Saturday 13th July 2019 6:50pm
Location: Stony Plain, Alberta, Canada
Contact:

Re: How to draw in a GLArea?

Post by Technopeasant »

Here is a bunch of code I had lying around for this. I really wish I had a version of my PS Tech alpha that worked from within QT 5, but have not had the wherewithal to try porting it myself from SDL.

http://icculus.org/~graham/Snippets/Too ... 0.1.tar.gz

I would also like to clarify that tommyline ported the NeHe examples to Gambas back in the day, and they were not posted by NeHe themselves. tommyline was a great help to me for as far as I have gotten with OpenGL, but he has since moved onto to coding in C++ for performance and more modern frameworks (OpenGL 2.1 is pretty much deprecated at this point).

Now a Vulkan component would be the bee's knees, but I guess one can only dream.
Technical director,
Piga Software
http://icculus.org/piga/
Post Reply