77 lines
1.6 KiB
Lua
Executable File
77 lines
1.6 KiB
Lua
Executable File
require("iuplua")
|
|
require("iupluagl")
|
|
require("luagl")
|
|
require("imlua")
|
|
|
|
iup.key_open()
|
|
|
|
texture = 0
|
|
|
|
cnv = iup.glcanvas{buffer="DOUBLE", rastersize = "640x480"}
|
|
|
|
function cnv:resize_cb(width, height)
|
|
iup.GLMakeCurrent(self)
|
|
gl.Viewport(0, 0, width, height)
|
|
end
|
|
|
|
function cnv:action(x, y)
|
|
iup.GLMakeCurrent(self)
|
|
gl.PixelStore(gl.UNPACK_ALIGNMENT, 1)
|
|
gl.Clear('COLOR_BUFFER_BIT,DEPTH_BUFFER_BIT') -- Clear Screen And Depth Buffer
|
|
|
|
gl.DrawPixelsRaw (image:Width(), image:Height(), glformat, gl.UNSIGNED_BYTE, gldata)
|
|
|
|
iup.GLSwapBuffers(self)
|
|
end
|
|
|
|
function cnv:k_any(c)
|
|
if c == iup.K_q or c == iup.K_ESC then
|
|
return iup.CLOSE
|
|
end
|
|
|
|
if c == iup.K_F1 then
|
|
if fullscreen then
|
|
fullscreen = false
|
|
dlg.fullscreen = "No"
|
|
else
|
|
fullscreen = true
|
|
dlg.fullscreen = "Yes"
|
|
end
|
|
end
|
|
|
|
if c == iup.K_F2 then
|
|
fileName = iup.GetFile("*.*")
|
|
new_image = im.FileImageLoadBitmap(fileName)
|
|
if (not new_image) then
|
|
iup.Message("Error", "LoadBitmap failed.")
|
|
else
|
|
gldata, glformat = new_image:GetOpenGLData()
|
|
if (image) then image:Destroy() end
|
|
image = new_image
|
|
iup.Update(cnv)
|
|
end
|
|
end
|
|
|
|
end
|
|
|
|
if arg and arg[1] ~= nil then
|
|
fileName = arg[1]
|
|
else
|
|
fileName = iup.GetFile("*.*")
|
|
end
|
|
|
|
image = im.FileImageLoadBitmap(fileName)
|
|
if (not image) then
|
|
error("LoadBitmap failed.")
|
|
end
|
|
gldata, glformat = image:GetOpenGLData()
|
|
|
|
dlg = iup.dialog{cnv; title="LuaGL/IUP/IM Loader"}
|
|
|
|
dlg:show()
|
|
cnv.rastersize = nil -- reset minimum limitation
|
|
|
|
if (not iup.MainLoopLevel or iup.MainLoopLevel()==0) then
|
|
iup.MainLoop()
|
|
end
|