Как увеличить скорость отрисовки на canvas?

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Re: Как увеличить скорость отрисовки на canvas?

Сообщение xterro » 28.02.2014 11:30:38

Vadim
Ага, только фишка в том, что резервную копию он делает в той-же директории, откуда загружался проект. а что делать если права на директорию, только на просмотр, и проект загружался только "на посмотреть"(вот как у меня). Директория "/usr/lib/*" обычно только на просмотр, прав на запись туда обычно не требуется. Думаю, может логичней настроить авто-сохранение, скажем каждую минуту-две-пять..., Или может есть способ настроить как-то путь, по которому сохранять резервные копии(скажем в хомяке пользователя), надо будет глянуть настройки на эту тему :)
xterro
постоялец
 
Сообщения: 148
Зарегистрирован: 23.02.2014 13:49:33

Re: Как увеличить скорость отрисовки на canvas?

Сообщение Vadim » 28.02.2014 11:45:33

xterro
Я себе Lazarus ствлю в home-каталог, так что проблем с правами никогда не бывает. И Вам советую, не надо будет делать лишних телодвижений. ;-)
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Как увеличить скорость отрисовки на canvas?

Сообщение Sharfik » 28.02.2014 14:47:42

xterro писал(а):Vadim
Ага, только фишка в том, что резервную копию он делает в той-же директории, откуда загружался проект. а что делать если права на директорию, только на просмотр, и проект загружался только "на посмотреть"(вот как у меня). Директория "/usr/lib/*" обычно только на просмотр, прав на запись туда обычно не требуется. Думаю, может логичней настроить авто-сохранение, скажем каждую минуту-две-пять..., Или может есть способ настроить как-то путь, по которому сохранять резервные копии(скажем в хомяке пользователя), надо будет глянуть настройки на эту тему :)

Насколько я помню линукс, прежде чем устанавливать Lazarus туда, надо было хотя бы ознакомится с назначением каталогов в linux.
ReadMe
/usr/lib/ - разделяемые библиотеки различных приложений , для папок программ предусмотрены другие папки.
Аватара пользователя
Sharfik
энтузиаст
 
Сообщения: 813
Зарегистрирован: 20.07.2013 01:04:30

Re: Как увеличить скорость отрисовки на canvas?

Сообщение debi12345 » 28.02.2014 16:20:52

Только что проверил (на MSE*) насколько GraphicsMagick (С-я DLL-ка) рисует быстрее чем нативный FPImage - навскидку в 4..5 раз.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: Как увеличить скорость отрисовки на canvas?

Сообщение xterro » 28.02.2014 16:48:51

Sharfik
Это да, но похоже в моём дистрибутиве(ALT Linux 6) по умолчанию, пакет с Lazarus ставится именно туда :( У меня в /usr/lib/lazarus лежит сам лазарь со всеми директориями, перимерами и документацией и ещё в моей папке пользователя в скрытой директории .lazarus/bin тоже лежит исполняемый файл лазаря, размером в 160 метров :shock: Сейчас назначил права на запись на директорию /usr/lib/lazarus/examples всё заработало, сообщений больше нет, но почему-то при запуске лазаря, в заголовке постоянно висит путь до этого примера (/usr/lib/lazarus/examples/openglcontrol), т.е он его не "отпустил" и считает этот проект текущим что-ли?
xterro
постоялец
 
Сообщения: 148
Зарегистрирован: 23.02.2014 13:49:33

Re: Как увеличить скорость отрисовки на canvas?

Сообщение Лекс Айрин » 28.02.2014 17:08:21

xterro, всегда можно скачать свою копию дистрибутива (в исходниках) и поставить ее в домашнюю папку.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Как увеличить скорость отрисовки на canvas?

Сообщение xterro » 28.02.2014 18:00:47

Это да. У меня теперь другая проблема, пробую рисовать, используя OpenGL, создал форму, кинул на неё ScrollBox, на него кинул OpenGLControl. Срызу задач Range для скролбаров(хотел посмотреть, как будет работать прокрутка), нарисовал треугольник. Но когда двигаю ползунками скроллбара, на самом изображении вы лазят какие-то артефакты, как будто на изображении просвечивают какие-то окна, или скроллбары... что-то такое...(в момент когда я двигаю ползунком). Что это может быть, косяк компоненты, среды, дров, или я просто что-то не до инициализировал? Причём артефакты наблюдались и когда просто запустил приложение, но ещё ничего не выводил, эффект был, будто он не перетирается(знаете, когда окном шевелишь, и оно остаётся не прорисованым, когда рисонок как бы следует за движением мышки ) Вот немножко кода:

Код: Выделить всё
procedure TForm1.OnMainFormCreate(Sender : TObject);
var
  w, h : Integer;
begin
    { Init OpenGL }
    w := 1000;
    h := 1000;
    glClearColor( 0.0, 0.0, 0.0, 0.0 );
    glViewport( 0, 0, w, h );
    glMatrixMode( GL_MODELVIEW );
    glLoadIdentity();

    ScrollBox.VertScrollBar.Range := h;
    ScrollBox.HorzScrollBar.Range := w;

end;       

{ Событие OnPaint OpenGLControl }

procedure TForm1.OpenGLControlPaint(Sender : TObject);
begin
    glClear(GL_COLOR_BUFFER_BIT );
    glColor3f( 1.0, 0.0, 0.0 );
    glBegin(GL_TRIANGLES);
        glVertex3f(0.0, 1.0, 0.0);
        glVertex3f(-1.0, -1.0, 0.0);
        glVertex3f(1.0, -1.0, 0.0);
    glEnd();
    OpenGLControl.SwapBuffers;
end;                                                       
                                               
У вас нет необходимых прав для просмотра вложений в этом сообщении.
xterro
постоялец
 
Сообщения: 148
Зарегистрирован: 23.02.2014 13:49:33

Re: Как увеличить скорость отрисовки на canvas?

Сообщение zub » 28.02.2014 18:52:42

Так не надо делать, даже нельзя - способ прокатит для обычных контролов, не для OpenGL. По факту ты сделал контекст 1000x1000 и глядиш на него через "окошко" формы. A нужно контекст делать в размер формы и ползунки привязывать к настройке матриц вида\прецирования эмулируя скролинг перерисовкой, т.е. двигать камеру
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

Re: Как увеличить скорость отрисовки на canvas?

Сообщение xterro » 28.02.2014 19:34:21

Вот оно чё, всё оказалось сложнее чем я думал. Т.е нужно использовать отдельные TScrollBar и вручную обрабатывать их события(в обработчиках этих событий двигать камеру)?. Пойду искать примеры, спасибо )
xterro
постоялец
 
Сообщения: 148
Зарегистрирован: 23.02.2014 13:49:33

Re: Как увеличить скорость отрисовки на canvas?

Сообщение zub » 28.02.2014 20:07:25

Всё не так сложно как кажется)) ты главное разберись с настройкой матриц, т.е. сделай их зависимыми от зума и положения камеры, а вот привязать это дело к колесу мышки и полосам или чему еще сложности никакой нет.
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

Re: Как увеличить скорость отрисовки на canvas?

Сообщение debi12345 » 01.03.2014 01:03:30

Если дело дошло до низко-уровневой отрисовки, то есть лучшая (становящаяся стандартом де-факто) альтернатива чем OpenGL : OpenCL+OpenCV. Или если нужна только графика, то вместо OpenCV (весьма громоздкого набора библиотек) можно использовать OpenCLIPP.
Тут хардварная акселерация по полной. Лучше сразу переучиться на эту связку - она и стандартная, и поддерживается монстрами индустрии.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: Как увеличить скорость отрисовки на canvas?

Сообщение MiniQ » 01.03.2014 11:23:52

Весьма любопытно, а есть ли реализация LCL через OpenCL+OpenCV?
Столкнулся с тем, что мой проект, запущенный на RaspberryPi неприлично медлено отрисовывает элементы интерфейса.
Сейчас весь в поисках, неужто прийдется переползать на Qt5 и Qt Creator...
MiniQ
новенький
 
Сообщения: 81
Зарегистрирован: 28.01.2013 16:31:55

Re: Как увеличить скорость отрисовки на canvas?

Сообщение debi12345 » 01.03.2014 16:55:12

Есть проект Delphi-OpenCV - правда под новые (XE) "дельфины". OpenCL -часть драйверов любой современной видяхи.
RaspberryPi - что за зверь ? На каком проце, видяхе ,.. ?

Добавлено спустя 5 минут 16 секунд:
неприлично медлено отрисовывает элементы интерфейса.

FPImage (применяемый в LCL) вообще очень медленный - на отрисовке интерфейса проигрывает тому же GraphicsMagick раз эдак в 10.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: Как увеличить скорость отрисовки на canvas?

Сообщение xterro » 01.03.2014 17:33:46

Это такой маленький одноплатный компьютер. RaspberryPi уже не в моде, сейчас в моде Cubieboard, они уже двухядерные идут с гигом оперативы :)
xterro
постоялец
 
Сообщения: 148
Зарегистрирован: 23.02.2014 13:49:33

Re: Как увеличить скорость отрисовки на canvas?

Сообщение debi12345 » 01.03.2014 19:43:02

Это такой маленький одноплатный компьютер.

Надо смотреть что является узким местом, создающим медленную отрисовку. Загружен ли проц под 100% при отрисовке, есть ли аппаратная акселерация графики (DirectX, OpenGL, OpenCL,..) и поддержка оной драйверами операционки. Если проц слабый, двойная буферизация не помогает и нет акселерации то придется искать оптимальную (для начала эффективнее чем FPImage) GUi-библиотеку - ту же Qt. Насколько помню, LCL имеет вариант настройки на оную.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Пред.След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 262

Рейтинг@Mail.ru