Перейти к содержимому
4x4x8

DevLog: библиотека пиксельной графики для ComputerCraft

Рекомендуемые сообщения

Я  течении 5-6 дней писал библиотеку для отрисовки пикселей. И щас я тут.
Моя библиотека использует символы, так что каждый пиксель размером (1,1), а не (2,3) если писать пробелы с цветным фоном.
Это также увеличивает разрешение по X в 2 раза, и 3 раза в Y

Текстурки я могу загружать через ссылки:

local texture = drw.fromURL("https://raw.githubusercontent.com/4x4x8/my_stuff_for_computercraft/main/Drawify/drw_texture_test.lua")
Canvas:drawImage(texture, 1, 1)
Canvas:updatePixels()


Очень просто и легко загружается в код, формат текстурки виден по ссылке :/
Всем спасибо, всем пока.

 

 

unknown.png

unknown.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

UPD: Измерил время на отрисовку. 1 Секунда, разрешение текстурки равно разрешению экрана.

image.png.fd265f363b26314060544d8a29506e2b.png

 

local first = os.epoch("utc")
Canvas:drawImage(texture, 1, 1)
Canvas:updatePixels()
local second = os.epoch("utc")
local time = second - first
 
print("Texture drawed for " .. tostring(time))
 
 
UPD2: Ну во впервых, если не считать создание текстурки рендер идет 189 милисекунд, на таком же разрешении.
Щас я перепишу обновление пикселей, код ускорится еще в 1.5-2 раза!
А еще я в душе не знаю как менять цвет фона. Ладно.
unknown.png
 
local first = os.epoch("utc")
Canvas:drawImage(texture, 1, 1)
Canvas:updatePixels()
local second = os.epoch("utc")
local time = second - first
 
print("Texture drawed for " .. tostring(time))
Изменено пользователем 4x4x8

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

UPD3: Я обновил отрисовку пикселей, добавил два буффера, и теперь рендер картинки занимает 109 мс.

 

unknown.png

 

 

Что насчет того, что бы несколько раз попробовать отрисовать одни и те же пиксели без изменений? 123 мс.
image.png.97bd964bbfcc2e099e67eea5d3f4b25b.png

 

local Monitor = peripheral.wrap("left")
local Canvas = DrawLib.new(Monitor, colors.black, true)
 
Monitor.setBackgroundColor(Canvas.background_color)
Monitor.clear()
print(Canvas.pixel_width, Canvas.pixel_height)
 
local first = os.epoch("utc")
Canvas:drawImage(texture, 1, 1)
Canvas:updatePixels()
Canvas:updatePixels()
local second = os.epoch("utc")
local time = second - first
 
print("Texture drawed for " .. tostring(time))

 

Очень доволен результатом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
9 часов назад, 4x4x8 сказал:

Это также увеличивает разрешение по X в 2 раза, и 3 раза в Y

А какое разрешение получается в итоге?

 

9 часов назад, 4x4x8 сказал:

формат текстурки виден по ссылке

Правильно понимаю, что там просто построчно запись RGB для каждого пикселя?

 

Кстати, планируется поддержка OpenComputers или не планируется?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Цитата
  10 часов назад, 4x4x8 сказал:

Это также увеличивает разрешение по X в 2 раза, и 3 раза в Y

А какое разрешение получается в итоге?

 

  10 часов назад, 4x4x8 сказал:

формат текстурки виден по ссылке

Правильно понимаю, что там просто построчно запись RGB для каждого пикселя?

 

Кстати, планируется поддержка OpenComputers или не планируется?

Итоговое разрешение - 318x168
Да, скрипт на питоне преобразует цвета изображения в цвета CC и преоброзовывает в строку с информацией о картинке.

Скрипты я загрузил на гитхаб:
https://github.com/4x4x8/my_stuff_for_computercraft/tree/main/Drawify

Либа будет скорее всего только на CC, ибо она больше персональная, а пользуюсь я CC

Изменено пользователем 4x4x8

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3 часа назад, 4x4x8 сказал:

Скрипты я загрузил на гитхаб

Скрипты — это хорошо. Но как получить код самой библиотеки?

 

Этот раздел предназначен для публикации программ. А отчёт по их разработке может быть лишь дополнением. Поэтому я предлагаю добавить ссылку на код библиотеки или перенести тему в более подходящий раздел.

 

Идеи использования шрифтов Брайля или двойной буферизации уже давно не являются новыми, и поэтому сейчас вряд ли кому-то интересно их теоретическое обсуждение. Но сама реализация может заинтересовать форумчан, даже не смотря на значительно большую популярность OpenComputers в сравнении с ComputerCraft.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 24.08.2022 в 18:32, eu_tomat сказал:

Скрипты — это хорошо. Но как получить код самой библиотеки?

 

Этот раздел предназначен для публикации программ. А отчёт по их разработке может быть лишь дополнением. Поэтому я предлагаю добавить ссылку на код библиотеки или перенести тему в более подходящий раздел.

 

Идеи использования шрифтов Брайля или двойной буферизации уже давно не являются новыми, и поэтому сейчас вряд ли кому-то интересно их теоретическое обсуждение. Но сама реализация может заинтересовать форумчан, даже не смотря на значительно большую популярность OpenComputers в сравнении с ComputerCraft.

Я вроде как уже выложил код либы на гитхаб(круги не работают, переписываю их активно)
Я не думаю что она будет кому-либо интересна и полезна в использовании т.к. я ее полностью под себя писал

Вот репо с либой, текстуркой и объектом текстурки, в папке Python есть скрипты для преобразования картинки в текстурку(надо запустить palettePaster, дабы преобразовать палитру цветов для CC, а потом imageTabler)
https://github.com/4x4x8/my_stuff_for_computercraft/tree/main/Drawify

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
40 минут назад, 4x4x8 сказал:

Я вроде как уже выложил код либы на гитхаб

В тот момент, когда я писал сообщение, то именно библиотеку я не смог найти в репозитории. Теперь вижу.

 

41 минуту назад, 4x4x8 сказал:

Я не думаю что она будет кому-либо интересна и полезна в использовании т.к. я ее полностью под себя писал

Это уже второй вопрос. Без кода эта тема была бы ещё менее интересной и менее полезной. Конечно, программы для ComputerCraft сейчас не пользуются большой популярностью, т.к. этому моду тяжело конкурировать с OpenComputers, но иногда люди ищут программы именно для ComputerCraft. Например, в этой теме просили переписать старую программу. Кстати, в ней почти весь код задействован для отрисовки графики. Может быть, твоя библиотека кого-нибудь вдохновит переписать эту штуку.

 

1 час назад, 4x4x8 сказал:

Вот репо с либой, текстуркой и объектом текстурки, в папке Python есть скрипты для преобразования картинки в текстурку(надо запустить palettePaster, дабы преобразовать палитру цветов для CC, а потом imageTabler)
https://github.com/4x4x8/my_stuff_for_computercraft/tree/main/Drawify

Благодарю. Так уже веселее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3 часа назад, eu_tomat сказал:

В тот момент, когда я писал сообщение, то именно библиотеку я не смог найти в репозитории. Теперь вижу.

 

Это уже второй вопрос. Без кода эта тема была бы ещё менее интересной и менее полезной. Конечно, программы для ComputerCraft сейчас не пользуются большой популярностью, т.к. этому моду тяжело конкурировать с OpenComputers, но иногда люди ищут программы именно для ComputerCraft. Например, в этой теме просили переписать старую программу. Кстати, в ней почти весь код задействован для отрисовки графики. Может быть, твоя библиотека кого-нибудь вдохновит переписать эту штуку.

 

Благодарю. Так уже веселее.

Я в скором времени залью обнову для кругов.
И да либа заточена под отрисовку пикселей, я даже впихнул поддержку текстур, мало ли кому-то надо будет :/

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
11 час назад, eu_tomat сказал:

В тот момент, когда я писал сообщение, то именно библиотеку я не смог найти в репозитории. Теперь вижу.

 

Это уже второй вопрос. Без кода эта тема была бы ещё менее интересной и менее полезной. Конечно, программы для ComputerCraft сейчас не пользуются большой популярностью, т.к. этому моду тяжело конкурировать с OpenComputers, но иногда люди ищут программы именно для ComputerCraft. Например, в этой теме просили переписать старую программу. Кстати, в ней почти весь код задействован для отрисовки графики. Может быть, твоя библиотека кого-нибудь вдохновит переписать эту штуку.

 

Благодарю. Так уже веселее.

Я обновил и выложил либу
Из изменений:
функция для очистки экрана
круги

https://github.com/4x4x8/my_stuff_for_computercraft/blob/main/Drawify/Drawify.lua

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...