voproser45654, Lua не быстрый в плане быстродействия в сравнении с компилируемыми языками. Но да, он быстрый в плане набросать логику, не заморачиваясь с языком программирования. А для игр (помимо концентрации на геймдизайне) есть ещё один плюс - это сразу добавить возможность модификаций.
Важно понимать, что Lua - встраиваемый язык. Он с самого начала таким был, и таковым остаётся до сих пор. Это значит, что он не самостоятельный. У той же игры будет некое ядро, которое будет являться средой для Lua.
Графические функции обычно важно как раз-таки оптимизировать в плане быстродействия. А это значит, что библиотека или что-то подобное должно быть на компилируемом языке. Хотя использование этих функций в итоге можно будет "пробросить" в Lua, работать они будут вне его.
Так что мой ответ: Lua и понятие графической библиотеки - несовместимы.
В качестве примера могу привести TTS. Хотя, может быть, не самый удачный пример, но всё же. Там на уровне Lua можно работать с коллизиями и лучами в 3D. Однако это так лишь с точки зрения пользователя. На самом деле, конечно же, вызов соответствующих функций переадресуется в движок Unity, и работает именно там, а результат возвращается обратно в Lua. Должен заметить, что получается крайне медленно и не эффективно в целом. Чем больше таких вызовов, тем больше суммарный оверхед. Но пару сотен вызовов в секунду - это не так много.
В плане скорости работы условно Lua можно считать в 100 раз медленнее С++. Это не заметно, когда расчёт занимает несколько наносекунд. А игровая логика обычно занимает не много. Типа hp==0, значит смерть. Как-то так, если утрировать.