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

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

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

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

 

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

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

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


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

 

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

 

http://www.youtube.com/watch?v=U4VbTfhZDJc

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

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


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

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

 

4003a7bc65402317eba3600c758f4f7b.png

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


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

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

 

383b39575822a142c67408a7a9de2d68.png

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

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


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

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

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


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

 

 

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

 

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

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


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

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

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

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

 

http://www.youtube.com/watch?v=HrIA9kMjQvg

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

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


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

Молодец, @Krutoy!

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

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

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


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

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

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

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


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

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

 

 

 

 

buffer.start)

 

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

 

buffer.setDrawLimit( int x, int y, int ширина, int высота )

 

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

 

buffer.resetDrawLimit( )

 

Убирает ограничивающую зону, если она была установлена ранее.

 

buffer.clearint цвет )

 

Заполняет экран указанным цветом, вызывает метод square(). Функция сделана исключительно для удобства.

 

buffer.buttonint x, int y, int ширина, int высота, int цвет кнопки, int цвет текста кнопки, string текст ): table координаты кнопки

 

Рисует на экране кнопку, автоматически размещая указанный текст по ее центру. Возвращает координаты начала и конца кнопки в массиве вида { x, y, x2, y2 }

 

buffer.adaptiveButtonint x, int y, int отступ по ширине, int отступ по высоте, int цвет кнопки, int цвет текста кнопки, string текст ): table координаты кнопки

 

Рисует на экране кнопку, автоматически рассчитывая ее размеры в зависимости от указанных отступов и длины текста. Возвращает координаты начала и конца кнопки в массиве вида { x, y, x2, y2 }

 

buffer.scrollBarint x, int y, int ширина, int высота, int количество элементов, int текущий элемент,  int цвет фона,  int цвет пимпочки )

 

Рисует на экране вертикальную полосу прокрутки. Под количеством элементов подразумевается, к примеру, количество строк в файле, а под текущим элементом текущая строка, с которой идет отображение файла.

 

buffer.horizontalScrollBarint x, int y, int ширина, int количество элементов, int текущий элемент,  int цвет фона,  int цвет пимпочки )

 

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

 

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

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


Ссылка на сообщение
Поделиться на других сайтах
В описание добавлены новые и не указанные ранее методы...

 

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

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


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

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

GP2UiybfhpM.jpg

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

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

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


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

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

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


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

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

b09bed391c0dc4502549de8f529d55d6.png

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

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


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

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

Экран 160х50

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

0G2dk.png

 

IhlKA.png

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

 

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

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

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


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

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

Ого, что это на экране? Посмотреть исходники можно? Изменено пользователем eu_tomat
длинная цитата

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


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

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

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

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


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

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

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

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

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

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

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

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

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


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