Перейти к публикации
Форум - ComputerCraft
NeoKat

NeoX - Графическая библиотека

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

​Описание:

Графическая библиотека для OC


​Требования:


Функции:

 

--Neo2D
NeoX.Neo2D.Text(x, y, текст, цвет, [GPU]) --Рисует заданный текст на заданных координатах
NeoX.Neo2D.Box(x, y, ширина, высота, цвет, [GPU]) --Рисует квадрат указанного размера указанного цвета на указанных координатах
NeoX.Neo2D.Point(x, y, цвет, [GPU]) --Рисует точку указанного цвета на указанных координатах

 

 

 

Ведётся работа над:

 

 

  • NeoInput
  • NeoNetwork

 

 

В будущем:

  • Neo3D
  • NeoAudio

 

 

Скачать:


http://pastebin.com/WkFtif35
pastebin get WkFtif35 /lib/NeoX.lua


P.S.'ки: 


P.S. Пока он поддерживает только рисование и только в 2D

 

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

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


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

Во первых: "фууу-ник украл у НЕО, плахой!!!!111!1!одинодинодиню!!!!".

Во вторых: и где твой DX, в Китае?

В третьих: СС нет.

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


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

Во первых: "фууу-ник украл у НЕО, плахой!!!!111!1!одинодинодиню!!!!".

Я у него никнейм не тырил

У меня много никнеймов: EnderKat, CyanKat, TechKat, NeoKat, NeoMeow, MewKat, DarkKat, SpyKat

 

Во вторых: и где твой DX, в Китае?

Уже выложил

 

В третьих: СС нет.

Всмысле ? Изменено пользователем NeoKat

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


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

Всмысле ?

 

На этом сервере нет.

 

Смысла данной либы нет, т.к. параллельная отрисовка у тебя всё равно не выйдет. Параллельность сможет сработать только при использовании функций, приостанавливающих действие каждого потока: coroutine.yield(), sleep(), os.pullEvent(), os.pullEventRaw() и т. д.

  • Like 2

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


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

На этом сервере нет.

 

Смысла данной либы нет, т.к. параллельная отрисовка у тебя всё равно не выйдет. Параллельность сможет сработать только при использовании функций, приостанавливающих действие каждого потока: coroutine.yield(), sleep(), os.pullEvent(), os.pullEventRaw() и т. д.

Параллельная отрисовка у меня уже вышла... Изменено пользователем NeoKat

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


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

Норм, это может быть полезно. Но лучше делай кросс-платформенно.

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


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

А не лучше ли будет смотреть на изменения элементов графики и если что-то изменилось не отрисовывать все, а отрисовывать только то что изменилось?

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


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

А не лучше ли будет смотреть на изменения элементов графики и если что-то изменилось не отрисовывать все, а отрисовывать только то что изменилось?

Он затирает стек после каждой отрисовки

Норм, это может быть полезно. Но лучше делай кросс-платформенно.

У меня всё плохо с OC, но я сейчас и пытаюсь сделать NeoX кросс-платформенным

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


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

Что то я не до конца понял смысла библиотеки. Зачем засовывать данные в рендер-стек, что бы другой поток занимался отрисовкой? Чем обычный print хуже NeoX.Neo2D.Text?

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


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

Что то я не до конца понял смысла библиотеки. Зачем засовывать данные в рендер-стек, что бы другой поток занимался отрисовкой? Чем обычный print хуже NeoX.Neo2D.Text?

 

Я когда игрался с параллельАПИ, то при попытке принтить что-то и рисовать где-то разными функциями в разных даже окнах наступает полный анал-карнавал. 

Кто и в какой микро-момент дернет принт, или gpu.set, или начнет перемещать курсор, или поменяет бэкграунд и прочее, одному криперу известно. На экране может наступить каша и инфа принтанется совершенно в неожиданном месте или поменяется форэграунд внезапно на полстроки)))

 

Я всегда делал с параллелью только одну функцию, которая отвечает за фрейм отрисовку, а уже что-то там в фоне что угодно меняется, значения стрингов, вычисления какие-то, ивенты, сеть работает и прочее. Так же как и с файлами. Если полезет писать в один файл функция, а он открыт для чтения уже другой функцией, тоже наступает бяка. Видимо автор и решил все хранить в стеке, как у нас в принципе и хранятся ивенты в пулах и прочее, и уже конкретно кто-то один, какой-то один конкретный процесс, занимается  рендером.

 

По идее, при параллели нужно все запросы на чтение, запись, рисование, команды какие-то, инструкции от параллельных процессов и прочее кидать в стэк, а уже конкретный обработчик  быстренько обрабатывает буфер и чистит его. Нужно максимально все процессы разнести друг от  друга, чтобы они нигде и никогда (!) не перехлестывались ни при каких обстоятельствах.

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


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

Почти сделал версию для OC (Больше не буду пользоваться CC :3)
P.S. В OC больше функционала, больше стек не понадобится (но по моему библиотека всё-равно хорошая :3)
P.P.S. Проблема с рендером текста... (но ошибка мне не о чём не говорит) Проблема исправлена (но я ничего не сделал :3)
P.P.P.S. Уже работаю над NeoX.Neo3D :3

 
 

Я когда игрался с параллельАПИ, то при попытке принтить что-то и рисовать где-то разными функциями в разных даже окнах наступает полный анал-карнавал.  Кто и в какой микро-момент дернет принт, или gpu.set, или начнет перемещать курсор, или поменяет бэкграунд и прочее, одному криперу известно. На экране может наступить каша и инфа принтанется совершенно в неожиданном месте или поменяется форэграунд внезапно на полстроки)))

 
 
По этой причине я не мог сделать для своей лаборатории (в одиночке конечно) GUI для "Центрального компьютера", поэтому я и начал делать эту библиотеку :3

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

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


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

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×