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


Фотография

DoubleBuffering: двойная буферизация графики

Буферизация Двойная Графика Окна Гуи Интерфейс

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 26

#1 Оффлайн   ECS

ECS
  • Гуру
  • Сообщений: 204
  • Уровень сигнала: 0,51%
  • В игре: 4 час. 10 мин.
  • ГородСанкт-Петербург

Награды

   10                  

Отправлено 26 Октябрь 2015 - 04:26

*
Популярное сообщение!

4c72bfcbe8fbee5993bfd7a058a5f88a.png
 
Всем известно, что видеокарты в OpenComputers, мягко говоря, не торт. Чем больше вы обращаетесь к ее методам, будь то установка цвета или символа, тем больше ваш компьютер будет тормозить при отрисовке. Поэтому ко мне пришла идея реализовать так называемую двойную буферизацию, а также несколько алгоритмов ускорения местных GPU.
 
Подробная иллюстрированная документация, описание структуры, способы установки и несколько практических примеров доступны по ссылке:
https://github.com/I...DoubleBuffering

Сообщение отредактировал ECS: 19 Май 2018 - 00:35


#2 Оффлайн   Zer0Galaxy

Zer0Galaxy
  • Гуру
  • Сообщений: 1 229
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

   5                              

Отправлено 26 Октябрь 2015 - 10:55

Проводилось ли какое либо тестирование на предмет эффективности предлагаемой библиотеки по сравнению со стандартным выводом на экран?

 

ECS? Такое ощущение, что давно знакомый человек сменил ник и аву.


Сообщение отредактировал Zer0Galaxy: 21 Март 2016 - 11:19


#3 Оффлайн   ECS

ECS
  • Автор темы
  • Гуру
  • Сообщений: 204
  • Уровень сигнала: 0,51%
  • В игре: 4 час. 10 мин.
  • ГородСанкт-Петербург

Награды

   10                  

Отправлено 26 Октябрь 2015 - 11:04

Проводилось ли какое либо тестирование на предмет эффективности предлагаемой библиотеки по сравнению со стандартным выводом на экран?

 

Ясен красен производилась. Собственно, для этого и писалась сама либа - во славу прироста скорости. Отдельные замеры проводить дико лень, ибо смысла убеждать себя в очевидных вещах нет, однако вон тут на 3:45 быстродействие будет четко заметно:

 


Сообщение отредактировал ECS: 26 Октябрь 2015 - 11:09

  • Mecopy6ka и krovyaka это нравится

#4 Оффлайн   cyber01

cyber01

    Техническая поддержка

  • Администраторы
  • Сообщений: 916
  • Уровень сигнала: 1,67%
  • В игре: 13 час. 38 мин.

Награды

            2      

Отправлено 26 Октябрь 2015 - 11:29

@Zer0Galaxy, это EliteClubSessions 



#5 Оффлайн   ECS

ECS
  • Автор темы
  • Гуру
  • Сообщений: 204
  • Уровень сигнала: 0,51%
  • В игре: 4 час. 10 мин.
  • ГородСанкт-Петербург

Награды

   10                  

Отправлено 27 Октябрь 2015 - 14:49

Если кому интересно, то добавил новый метод image, позволяющий вставлять изображения, созданные в фотошопе. Пикча прилагается:

 

4003a7bc65402317eba3600c758f4f7b.png


  • Alex, Fingercomp, Mecopy6ka и 2 другим это нравится

#6 Оффлайн   evgkul

evgkul
  • Пользователи
  • Сообщений: 369
  • Уровень сигнала: 0,59%
  • В игре: 4 час. 49 мин.

Награды

     

Отправлено 27 Октябрь 2015 - 15:20

Вот теперь есть повод его использовать :)



#7 Оффлайн   ECS

ECS
  • Автор темы
  • Гуру
  • Сообщений: 204
  • Уровень сигнала: 0,51%
  • В игре: 4 час. 10 мин.
  • ГородСанкт-Петербург

Награды

   10                  

Отправлено 28 Октябрь 2015 - 00:02

Добавил программку-демонстратор в установщик либы. Запускайте BufferDemo.lua, если надо.

 

383b39575822a142c67408a7a9de2d68.png


Сообщение отредактировал ECS: 28 Октябрь 2015 - 09:12

  • Alex, Fingercomp, Mecopy6ka и 3 другим это нравится

#8 Оффлайн   davial

davial
  • Пользователи
  • Сообщений: 450
  • Уровень сигнала: 14,83%
  • В игре: 120 час. 52 мин.
  • ГородТроон в системе Канопуса.

Награды

                       

Отправлено 28 Октябрь 2015 - 13:37

Чёрт. До боли напоминает другое время и другие компы. Бейсик на ZX в 80-х - 90-х. :)


  • Kartze это нравится

#9 Оффлайн   ECS

ECS
  • Автор темы
  • Гуру
  • Сообщений: 204
  • Уровень сигнала: 0,51%
  • В игре: 4 час. 10 мин.
  • ГородСанкт-Петербург

Награды

   10                  

Отправлено 28 Октябрь 2015 - 14:55

Чёрт. До боли напоминает другое время и другие компы. Бейсик на ZX в 80-х - 90-х.

 

Кстати, алгоритм смешивания цветов (тени, прозрачность) мы сперли именно из QBasic IDE :D


  • Mecopy6ka и davial это нравится

#10 Оффлайн   ECS

ECS
  • Автор темы
  • Гуру
  • Сообщений: 204
  • Уровень сигнала: 0,51%
  • В игре: 4 час. 10 мин.
  • ГородСанкт-Петербург

Награды

   10                  

Отправлено 21 Март 2016 - 11:02

Небольшое, но крайне емкое обновление:

  • Увеличена скорость отрисовки в 1.5 - 2 раза посредством добавления третьего промежуточного буфера
  • Уменьшено количество обращений к CPU, уменьшено число операций сложения/вычитания
  • Улучшена система конвертации индексов
  • Добавлено больше благодарных комментариев в коде, славящих Krutoy за помощь в разработке.

Ну, и, собственно, демонстрация скорости работы:

 


Сообщение отредактировал ECS: 22 Март 2016 - 00:11


#11 Оффлайн   SDV

SDV
  • Пользователи
  • Сообщений: 655
  • Уровень сигнала: 25,09%
  • В игре: 204 час. 27 мин.
  • ГородO.R.E.N.B.U.R.G.

Награды

        

Отправлено 21 Март 2016 - 16:19

Молодец, Krutoy!

Помог человеку и засветился на его канале :D

А либа просто шикарная!



#12 Оффлайн   qwertyMAN

qwertyMAN
  • Пользователи
  • Сообщений: 1 438
  • Уровень сигнала: 0,13%
  • В игре: 1 час. 3 мин.
  • ГородCity17

Награды

                             

Отправлено 21 Март 2016 - 16:43

Теперь в каждом новом видео светится моя прога  :)


Сообщение отредактировал qwertyMAN: 21 Март 2016 - 16:43


#13 Оффлайн   ECS

ECS
  • Автор темы
  • Гуру
  • Сообщений: 204
  • Уровень сигнала: 0,51%
  • В игре: 4 час. 10 мин.
  • ГородСанкт-Петербург

Награды

   10                  

Отправлено 26 Март 2016 - 20:22

В описание добавлены новые и не указанные ранее методы:

 

Спойлер

Сообщение отредактировал ECS: 26 Март 2016 - 20:27


#14 Оффлайн   unknown

unknown
  • Пользователи
  • Сообщений: 63
  • Уровень сигнала: 14,92%
  • В игре: 121 час. 36 мин.

Награды

        

Отправлено 29 Март 2016 - 19:44

В описание добавлены новые и не указанные ранее методы...
 


А кнопки и скроллбары возвращают что-нибудь? (Есть хендлер по клику? Текущее положение скроллбара? и т. д.)

#15 Оффлайн   Jet

Jet
  • Пользователи
  • Сообщений: 80
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.
  • ГородМосква

Отправлено 12 Май 2016 - 19:45

Идею для оптимизации надо? Или нет пределу совершенства.

GP2UiybfhpM.jpg

С символом "F" так вобще не 8 будет а 4.


Сообщение отредактировал Jet: 12 Май 2016 - 19:46


#16 Оффлайн   Seryoga

Seryoga
  • Пользователи
  • Сообщений: 108
  • Уровень сигнала: 0,31%
  • В игре: 2 час. 33 мин.
  • ГородSaint-Petersburg

Награды

        

Отправлено 12 Май 2016 - 20:11

Мне казалось, что у него так рисует:
b09bed391c0dc4502549de8f529d55d6.png



#17 Оффлайн   Jet

Jet
  • Пользователи
  • Сообщений: 80
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.
  • ГородМосква

Отправлено 12 Май 2016 - 20:50

Мне казалось, что у него так рисует:
b09bed391c0dc4502549de8f529d55d6.png

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



#18 Оффлайн   DarthWirthe

DarthWirthe
  • Пользователи
  • Сообщений: 14
  • Уровень сигнала: 0,01%
  • В игре: 0 час. 7 мин.

Награды

           

Отправлено 22 Июнь 2016 - 17:15

Крутая библиотека.

Экран 160х50

На нижнем видно фпс (новая версия игры)

0G2dk.png

 

IhlKA.png

Просто пользуюсь ей часто)

 

Кстати, максимальный возможный фпс - 19 (пустой экран)


Сообщение отредактировал DarthWirthe: 23 Июнь 2016 - 14:27


#19 Оффлайн   Asummonster

Asummonster
  • Пользователи
  • Сообщений: 570
  • Уровень сигнала: 45,22%
  • В игре: 368 час. 28 мин.
  • ГородКиев

Награды

                    

Отправлено 22 Июнь 2016 - 18:23

Крутая библиотека.

Экран 160х50

На нижнем видно фпс (новая версия игры)

0G2dk.png

 

IhlKA.png

Просто пользуюсь ей часто)

Ого, что это на экране? Посмотреть исходники можно?



#20 Оффлайн   qwertyMAN

qwertyMAN
  • Пользователи
  • Сообщений: 1 438
  • Уровень сигнала: 0,13%
  • В игре: 1 час. 3 мин.
  • ГородCity17

Награды

                             

Отправлено 22 Июнь 2016 - 19:01

Круто конечно, но ОС изначально не планировался для создание на ней игр. И 2 FPS тому свидетельство.

Не вижу смысла делать полноценные сложные игры на ОС. Для этого есть луа движки. Вон например я что накатал на love2D: атака бактерий и относительный космос.



#21 Оффлайн   Doob

Doob
  • Пользователи
  • Сообщений: 814
  • Уровень сигнала: 17,94%
  • В игре: 146 час. 10 мин.

Награды

                                   

Отправлено 22 Июнь 2016 - 19:26

Для экшон-шутеров OC не приспособлен, но какая-нибудь пиксельная казуальщина или продвинутые настолки работают прекрасно.

Ограниченность ресурсов воспитывает бережное к ним отношение, современные технологии избаловали программистов, они без задних мыслей стряпают решения для пожирания ресурсов, а не решения задач.


  • LeshaInc, davial и Kid это нравится

#22 Оффлайн   DarthWirthe

DarthWirthe
  • Пользователи
  • Сообщений: 14
  • Уровень сигнала: 0,01%
  • В игре: 0 час. 7 мин.

Награды

           

Отправлено 22 Июнь 2016 - 19:29

Ого, что это на экране? Посмотреть исходники можно?

Это порт моей старой игрули с CC на OC

Топик:

http://computercraft...ft-2d-rpg-game/

 

И еще OCEmu немного модифицированный мной


Сообщение отредактировал DarthWirthe: 22 Июнь 2016 - 19:38

  • Asummonster это нравится

#23 Оффлайн   Zer0Galaxy

Zer0Galaxy
  • Гуру
  • Сообщений: 1 229
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

   5                              

Отправлено 23 Июнь 2016 - 10:57

И еще OCEmu немного модифицированный мной
Вау! Мне нравится этот эмулятор. Вот только почему то  основная файловая система readonly

#24 Оффлайн   qwertyMAN

qwertyMAN
  • Пользователи
  • Сообщений: 1 438
  • Уровень сигнала: 0,13%
  • В игре: 1 час. 3 мин.
  • ГородCity17

Награды

                             

Отправлено 23 Июнь 2016 - 12:34

Для экшон-шутеров OC не приспособлен, но какая-нибудь пиксельная казуальщина или продвинутые настолки работают прекрасно.

Ограниченность ресурсов воспитывает бережное к ним отношение, современные технологии избаловали программистов, они без задних мыслей стряпают решения для пожирания ресурсов, а не решения задач.

Ну вот например, отличная игра, Сапёр!

Или Lava runner от electronic_steve в которой очень круто можно бегать убегать.

 

Кто то говорит что у меня много рекламы своих игр. А я говорю что не только своих =)

 

Если вы заметили, это сообщение номер 666. Совпадение? Не думаю.


Сообщение отредактировал qwertyMAN: 23 Июнь 2016 - 16:20

  • electronic_steve это нравится

#25 Оффлайн   ECS

ECS
  • Автор темы
  • Гуру
  • Сообщений: 204
  • Уровень сигнала: 0,51%
  • В игре: 4 час. 10 мин.
  • ГородСанкт-Петербург

Награды

   10                  

Отправлено 02 Ноябрь 2017 - 04:33

Проведен рефакторинг библиотеки с целью увеличения скорости отрисовки: все методы и поля таблиц, хоть как-либо используемые самой библиотекой, заменены на единоразово созданные локальные переменные. Удалена избыточная группировка по функциям. Изменен принцип растеризации отрезков. Добавлен метод buffer.formattedText, позволяющий изменять цвет текста в реальном времени через вставку синтаксических конструкций вида #RRGGBB.

 

Как результат - общая производительность выросла в ~3 раза по сравнению со старой версией библиотеки (первая пикча) и новой (вторая):

 

pP11Ijv.png?1

 

5bn9k6n.png?1



#26 Онлайн   eu_tomat

eu_tomat
  • Хранители Кода
  • Сообщений: 911
  • Уровень сигнала: 6,13%
  • В игре: 49 час. 56 мин.

Награды

                          

Отправлено 02 Ноябрь 2017 - 08:42

все методы и поля таблиц, хоть как-либо используемые самой библиотекой, заменены на единоразово созданные локальные переменные.

Чётко! И сборщик мусора зря не напрягается, и результаты вычислений используются повторно.

#27 Оффлайн   ECS

ECS
  • Автор темы
  • Гуру
  • Сообщений: 204
  • Уровень сигнала: 0,51%
  • В игре: 4 час. 10 мин.
  • ГородСанкт-Петербург

Награды

   10                  

Отправлено 16 Февраль 2018 - 17:50

Библиотека обновлена с общим увеличением производительности в ~1.4 раза и уменьшением потребления памяти на 140 Кбайт путем смены концепции хранения данных. Опытным путем выяснилось, что 2 пиксельных массива вида { 0xFFFFFF, 0xFFFFFF, "S", ... } кушают в разы больше, нежели 6 таких же массивов для цветов фона, текста и символов по раздельности (пруфскрипт - https://pastebin.com/mPynSL2H):

 

wHfWMBE.png

 

Судя по всему, подобная разница возникает из-за попеременной смены типов данных в таблице. Разумеется, это послужило отличным поводом перекодить методы отрисовки, избавившись от инкрементирования индексов в циклах. Так что все прожки, написанные на данной библиотеке, стали кушать меньше и работать быстрее. Наглядно по тикам результат следующий (см. скрины выше):

 

00Jd1aw.png?1







Темы с аналогичным тегами Буферизация, Двойная, Графика, Окна, Гуи, Интерфейс

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных