Skip to content

Commit

Permalink
lua: fix regression with display module
Browse files Browse the repository at this point in the history
doc: add note about double buffering to Lua intro
  • Loading branch information
and3rson committed Mar 10, 2024
1 parent 62f294c commit 3dbff08
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 0 deletions.
12 changes: 12 additions & 0 deletions docs/manual/keira/lua/intro.rst
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ Keira має вбудовану віртуальну машину мови пр
local ball_x
local ball_y
-- Завантажуємо зображення м'яча, яке знаходиться в корені SD-картки:
local ball = resources.load_image("ball.bmp", display.color565(255, 255, 255))
function lilka.init()
Expand Down Expand Up @@ -139,6 +140,17 @@ Keira має вбудовану віртуальну машину мови пр

Завдяки аргументу ``delta`` м'яч завжди рухатиметься з однаковою швидкістю незалежно від того, як швидко виконується програма - чи це 30 кадрів на секунду, чи 10, чи 1000.

.. warning::

Ваш код всередині функції ``lilka.draw()`` не повинен робити жодних припущень щодо того, що вже було намальовано раніше. Кожен кадр гри потрібно малювати повністю.

Це потрібно тому, що Keira використовує
`подвійну буферизацію <https://uk.wikipedia.org/wiki/%D0%91%D0%B0%D0%B3%D0%B0%D1%82%D0%BE%D0%BA%D1%80%D0%B0%D1%82%D0%BD%D0%B0_%D0%B1%D1%83%D1%84%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D1%96%D1%8F#%D0%9F%D0%BE%D0%B4%D0%B2%D1%96%D0%B9%D0%BD%D0%B0_%D0%B1%D1%83%D1%84%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D1%96%D1%8F_%D1%83_%D0%BA%D0%BE%D0%BC%D0%BF'%D1%8E%D1%82%D0%B5%D1%80%D0%BD%D1%96%D0%B9_%D0%B3%D1%80%D0%B0%D1%84%D1%96%D1%86%D1%96>`_
екрану, тобто ваша гра малює на **передньому буфері**, а в цей час Keira відображає **задній буфер** на екрані.

Тому радимо починати кожен кадр гри з виклику ``display.fill_screen(display.color565(0, 0, 0))``, щоб очистити передній буфер перед малюванням нового кадру,
оскільки він може бути забруднений попереднім кадром.

.. _lua-fast-testing:

Швидке тестування програм
Expand Down
1 change: 1 addition & 0 deletions firmware/keira/src/apps/lua/lualilka_display.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -300,5 +300,6 @@ int lualilka_display_register(lua_State* L) {
lua_setfield(L, -2, "width");
lua_pushinteger(L, app->canvas->height());
lua_setfield(L, -2, "height");
lua_setglobal(L, "display");
return 0;
}

0 comments on commit 3dbff08

Please sign in to comment.