<Guide du Rootard GeeXLab/>

GeeXLab et le langage Lua


Dernière mise à jour: 2018.05.28 par JeGX

>> Retour <<


Le langage Lua fait parti des 2 langages actuellement disponibles dans GeeXLab (l'autre langage étant Python). Le Lua est le langage de prédilection de GeeXLab puisqu'il est le premier langage à avoir été intégré dedans et qu'il fait parti du noyau de GeeXLab (Python est disponible via une extension).





Le Lua est un langage vraiment simple à utiliser tout en étant puissant (puissance = fonctionnalités). Cette puissance facilement accessible a d'ailleurs séduit bon nombre de développeurs car Lua est utilisé dans beaucoup d'applications et de jeux vidéo (VLC, Wireshark, World of Warcraft, suivez CryEngine, ce lien pour plus d'exemples). Sa syntaxe est claire et flexible (on peut coder des instructions complètes sur une seule ligne par exemple). Mais surtout Lua est rapide. Il fait parti des langages de scripting les plus rapides.


Si vous ne savez pas avec quel langage débuter la programmation GeeXLab, n'hésitez pas, foncez sur Lua. Je programme de temps en temps des démos Python, mais j'utilise essentiellement Lua. La grande majorité des démos, exemples de code et applications faites avec GeeXLab sont codées en Lua. Quand j'ajoute des nouvelles fonctionnalités dans GeeXLab, elles sont d'abord disponibles en Lua.


Juste pour se fixer les idées, voici quelques lignes de Lua:

a = 5
b = 2
c = a + b
d = 0
if (c > 5) then
  d = 1
else
   d = -1
end


s = "Ceci est une chaine"
s = s .. " de caracteres"

x = 0
for i=0, 10 do
  x = x + 1
end



function myKoolFunc(a, b, c)
  -- Do something useful with a, b and c:
  local sum = a+b+c
  local avg= sum/3
  return sum, avg
end

x, y = myKoolFunc(1, 2, 3)


Le langage Lua est rapide, très rapide. Mais si sa rapidité native n'est pas suffisante, il existe une solution: LuaJIT. Grâce à LuaJIT, il est possible de multiplier la vitesse de Lua par 10 dans certains cas. LuaJIT est aussi supporté par GeeXLab.


GeeXLab est toujours (dans la mesure du possible, j'ai pas quatre bras!) à jour par rapport à l'évolution de Lua. La dernière version de Lua est la 5.3.4 et c'est la version supportée par GeeXLab. Ce n'est pas le cars pour LuaJIT qui se limite pour le moment à la branche 5.1 de Lua. Cette petite différence peut causer quelques soucis si votre code Lua utilise quelques spécificités de la branche 5.2 ou 5.3 de Lua comme les operateurs bitwise. Donc si vous prévoyez d'utiliser LuaJIT, il est conseiller de se limiter au Lua 5.1.


Voilà quelques liens:



Exemple simple de démo GeeXLab en Lua


Et pour finir, voilà un exemple de démo GeeXLab qui utilise Lua. La demo est composée de trois fichier: le XML principal, le script INIT et le script FRAME.


A titre de comparaison, la même démo en Python se trouve ICI.

Le fichier XML principal: main.xml


<?xml version="1.0" encoding="utf-8" standalone="yes"?>

<glsl_hacker>

	<window name="win3d01" title="Hello World!" width="700" height="200" />
  
	<script name="init_scene" run_mode="INIT" filename="init.lua" />

	<script name="update_scene" run_mode="FRAME" filename="frame.lua" />
  
</glsl_hacker>

Le script INIT: fichier init.lua


font = gh_utils.font_create("Tahoma", 14)

Le script FRAME: fichier frame.lua


gh_renderer.clear_color_buffer(0.4, 0.4, 0.4, 1.0)

x = 10
y = 20
gh_utils.font_render(font, x, y, 1.0, 1.0, 0.0, 1.0, "Hello World from GeeXLab!")

x = 10
y = 40
elapsed_time = gh_utils.get_elapsed_time()
gh_utils.font_render(font, x, y, 1.0, 1.0, 1.0, 1.0, "Elapsed time: " .. elapsed_time)




Guide du Rootard GeeXLab | Téléchargements | Contact | Newsletter