Are we using Lua GL?

source: http://luagl.sourceforge.net/
Are we using Lua GL if so which iteration of Lua are we using.

No, we’re not. (Well, they might be using it internally, but I doubt it, and if they are they aren’t exposing the API. I rather suspect they’re calling the native Objective-C bindings).

@MyC0dea no, we aren’t using Lua GL. In fact, Lua GL is the sort of API we would like to stay away from, as it is very low level. The closest you’ll come to Lua GL style functionality in Codea is in the Mesh type.

The following Lua GL code draws a rectangle and a triangle.

From http://luagl.sourceforge.net/examples/nehe_02.lua

As you can see, having to write the code below just to draw simple primitives is probably not desirable in most circumstances.

require("iuplua")
require("iupluagl")
require("luagl")
require("luaglu")

iup.key_open()

cnv = iup.glcanvas{buffer="DOUBLE", rastersize = "640x480"}

function cnv:resize_cb(width, height)
  iup.GLMakeCurrent(self)
  gl.Viewport(0, 0, width, height)

  gl.MatrixMode('PROJECTION')   -- Select The Projection Matrix
  gl.LoadIdentity()             -- Reset The Projection Matrix
  
  if height == 0 then           -- Calculate The Aspect Ratio Of The Window
    height = 1
  end

  glu.Perspective(80, width / height, 1, 5000)

  gl.MatrixMode('MODELVIEW')    -- Select The Model View Matrix
  gl.LoadIdentity()             -- Reset The Model View Matrix
end

function cnv:action(x, y)
  iup.GLMakeCurrent(self)
  gl.Clear('COLOR_BUFFER_BIT,DEPTH_BUFFER_BIT') -- Clear Screen And Depth Buffer
  
  gl.LoadIdentity()              -- Reset The Current Modelview Matrix
  gl.Translate(-1.5, 0, -6)      -- Move Left 1.5 Units And Into The Screen 6.0
  
  gl.Begin('TRIANGLES')          -- Drawing Using Triangles
    gl.Vertex( 0,  1, 0)         -- Top
    gl.Vertex(-1, -1, 0)         -- Bottom Left
    gl.Vertex( 1, -1, 0)         -- Bottom Right
  gl.End()                       -- Finished Drawing The Triangle
  
  gl.Translate(3, 0, 0)          -- Move Right 3 Units
  
  gl.Begin('QUADS')              -- Draw A Quad
    gl.Vertex(-1,  1, 0)         -- Top Left
    gl.Vertex( 1,  1, 0)         -- Top Right
    gl.Vertex( 1, -1, 0)         -- Bottom Right
    gl.Vertex(-1, -1, 0)         -- Bottom Left
  gl.End()

  iup.GLSwapBuffers(self)
end

function cnv:k_any(c)
  if c == iup.K_q or c == iup.K_ESC then
    return iup.CLOSE
  elseif c == iup.K_F1 then
    if fullscreen then
      fullscreen = false
      dlg.fullscreen = "No"
    else
      fullscreen = true
      dlg.fullscreen = "Yes"
    end
    iup.SetFocus(cnv)
  end
end

function cnv:map_cb()
  iup.GLMakeCurrent(self)
  gl.ShadeModel('SMOOTH')            -- Enable Smooth Shading
  gl.ClearColor(0, 0, 0, 0.5)        -- Black Background
  gl.ClearDepth(1.0)                 -- Depth Buffer Setup
  gl.Enable('DEPTH_TEST')            -- Enables Depth Testing
  gl.DepthFunc('LEQUAL')             -- The Type Of Depth Testing To Do
  gl.Enable('COLOR_MATERIAL')
  gl.Hint('PERSPECTIVE_CORRECTION_HINT','NICEST')
end

dlg = iup.dialog{cnv; title="LuaGL Test Application 02"}

dlg:show()
cnv.rastersize = nil -- reset minimum limitation

if (not iup.MainLoopLevel or iup.MainLoopLevel()==0) then
  iup.MainLoop()
end