Russian Qt Forum
Ноябрь 23, 2024, 08:40
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Дополнительные компоненты
>
Light Plot2D
Страниц:
1
...
5
6
[
7
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Light Plot2D (Прочитано 61775 раз)
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Light Plot2D
«
Ответ #90 :
Июль 26, 2010, 21:44 »
Цитата: daimon от Июль 26, 2010, 20:43
Тут же проблема как разбить QPixmap для рисования и как создать ту универсальную функцию (поток) для отрисовки информации, а дальше экспериментировать с количеством потоков (для лучшего результата). И ещё подсчёт координат точек логично разпоточить, если вектор будет содержать более 1000 точек (отловить ифом).
Оптимальное количество ниток давно известно: это кол-во ядер процессора(ов) + 1 (главная нитка). 1000 (1K) точек - это просто несерьезно при таких малых операциях над ними. Возможно положительный эффект начнется с 50-100К точек, да и то с компилятором Intel. Разбивать QPixMap никак не надо, просто пусть каждая нитка рисует свои линии (на том же QPixMap) - интересно что из этого получится
Записан
daimon
Гость
Re: Light Plot2D
«
Ответ #91 :
Июль 26, 2010, 22:04 »
Цитата: Igors от Июль 26, 2010, 21:44
Цитата: daimon от Июль 26, 2010, 20:43
Тут же проблема как разбить QPixmap для рисования и как создать ту универсальную функцию (поток) для отрисовки информации, а дальше экспериментировать с количеством потоков (для лучшего результата). И ещё подсчёт координат точек логично разпоточить, если вектор будет содержать более 1000 точек (отловить ифом).
Оптимальное количество ниток давно известно: это кол-во ядер процессора(ов) + 1 (главная нитка). 1000 (1K) точек - это просто несерьезно при таких малых операциях над ними. Возможно положительный эффект начнется с 50-100К точек, да и то с компилятором Intel. Разбивать QPixMap никак не надо, просто пусть каждая нитка рисует свои линии (на том же QPixMap) - интересно что из этого получится
Тут же надо не забывать про потокобезопасность - ведь один пикмеп рисуется!
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Light Plot2D
«
Ответ #92 :
Июль 26, 2010, 22:15 »
Цитата: daimon от Июль 26, 2010, 22:04
Тут же надо не забывать про потокобезопасность - ведь один пикмеп рисуется!
Так вот именно - на этом форуме я слышал, что, мол, рисовать на экране - только из главной нитки. Это не вызывает сомнений. А вот рисовать в буфер - пожалуйста из любой нитки. Здесь не знаю.
m_ax
имеет хорошую возможность проверить
Записан
daimon
Гость
Re: Light Plot2D
«
Ответ #93 :
Июль 27, 2010, 22:18 »
Как создать ту универсальную функцию отрисовки пиксмепа для потока?
Наверное:
1. Площадь отрисовки (координаты);
2 Указатель на объект пиксмепа;
3 Как-то указать информацию для отрисовки (вот не знаю как).
Записан
m_ax
Джедай : наставник для всех
Offline
Сообщений: 2095
Re: Light Plot2D
«
Ответ #94 :
Июль 27, 2010, 22:46 »
Цитировать
Как создать ту универсальную функцию отрисовки пиксмепа для потока?
Наверное:
1. Площадь отрисовки (координаты);
2 Указатель на объект пиксмепа;
3 Как-то указать информацию для отрисовки (вот не знаю как).
Да не)) Всё проще)
1) Пишете класс вашего потока (унаследованный от QThread)
2) Данный класс, ясен пень, будет лишь эмитеть сигналы, в конкретном случае только один, с аргументом QPixmap (смотрим пример с Мандэльбротом)
3) При событиях, провоцирующих перерисовку вызываем метод start нашего потока, а в конструкторе (plottera) соединяем сигнал окончания выполнения потока с update..
Это так: в общих чертах..
Теперь, реализовав всё это смотрим что получается:
1) Вариант без потоков:
Делаем зум) Тянем мышь, появляется рубербенд -> отпускаем мышь -> ждём некоторое время (GUI - замирает, пихмап перерисовывается) -> отрисованный пиксмап появляется (GUI оживает) Мы радуемся)))
2) Вариант с потоками:
Делаем зум) Тянем мышь, появляется рубербенд -> отпускаем мышь -> ждём некоторое время (GUI - НЕ замирает, хотя пиксмап перерисовывается) -> отрисованный пиксмап появляется. Мы радуемся)))
Это вариант с одним ядром)
Ради интереса, такое замутить можно (с потоками), но ответим себе на такой вопрос - правильное ли это будет решение? То бишь оно того стоит?
P.S. Я, наверное из любопытства это сделаю, но пока занимаюсь другим - то что нужно очень срочно написать, и заниматься lightplot2d пока времени особо нет((
Записан
Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..
Arch Linux Plasma 5
daimon
Гость
Re: Light Plot2D
«
Ответ #95 :
Июль 28, 2010, 00:57 »
Цитата: m_ax от Июль 27, 2010, 22:46
Цитировать
Как создать ту универсальную функцию отрисовки пиксмепа для потока?
Наверное:
1. Площадь отрисовки (координаты);
2 Указатель на объект пиксмепа;
3 Как-то указать информацию для отрисовки (вот не знаю как).
Да не)) Всё проще)
1) Пишете класс вашего потока (унаследованный от QThread)
2) Данный класс, ясен пень, будет лишь эмитеть сигналы, в конкретном случае только один, с аргументом QPixmap (смотрим пример с Мандэльбротом)
3) При событиях, провоцирующих перерисовку вызываем метод start нашего потока, а в конструкторе (plottera) соединяем сигнал окончания выполнения потока с update..
Это так: в общих чертах..
Теперь, реализовав всё это смотрим что получается:
1) Вариант без потоков:
Делаем зум) Тянем мышь, появляется рубербенд -> отпускаем мышь -> ждём некоторое время (GUI - замирает, пихмап перерисовывается) -> отрисованный пиксмап появляется (GUI оживает) Мы радуемся)))
2) Вариант с потоками:
Делаем зум) Тянем мышь, появляется рубербенд -> отпускаем мышь -> ждём некоторое время (GUI - НЕ замирает, хотя пиксмап перерисовывается) -> отрисованный пиксмап появляется. Мы радуемся)))
Это вариант с одним ядром)
Ради интереса, такое замутить можно (с потоками), но ответим себе на такой вопрос - правильное ли это будет решение? То бишь оно того стоит?
P.S. Я, наверное из любопытства это сделаю, но пока занимаюсь другим - то что нужно очень срочно написать, и заниматься lightplot2d пока времени особо нет((
Да но один поток должен быть, чтобы не умирал GUI. А за потоки - даже на Nokia 5530 XM заметна разница в быстродействии - один поток и 3 потока сразу в 25%(так была проверка под Qt Symbian)
«
Последнее редактирование: Июль 28, 2010, 01:15 от daimon
»
Записан
m_ax
Джедай : наставник для всех
Offline
Сообщений: 2095
Re: Light Plot2D
«
Ответ #96 :
Октябрь 19, 2010, 11:56 »
Выкладываю пример использования lightplot2d. (эдакий форк на на одну из первых реализаций)
Пример требует предустановленного lightplot2d, разумеется.
С иконками, опять же туговато, так что кто может: буду признателен, если нарисуете)
Записан
Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..
Arch Linux Plasma 5
nixman05
Гость
Re: Light Plot2D
«
Ответ #97 :
Ноябрь 04, 2010, 23:43 »
Сама библиотека скомпилировалась кое-как. А пример не собирается: либо ошибка на этапе линковки, либо падает при запуске.
Записан
m_ax
Джедай : наставник для всех
Offline
Сообщений: 2095
Re: Light Plot2D
«
Ответ #98 :
Ноябрь 05, 2010, 13:21 »
Цитировать
Сама библиотека скомпилировалась кое-как. А пример не собирается: либо ошибка на этапе линковки, либо падает при запуске.
Ну я не телепат) Поподробнее опишите ситуацию. Что за ось, как собирали, какие ошибки ну и т.д.
Записан
Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..
Arch Linux Plasma 5
nixman05
Гость
Re: Light Plot2D
«
Ответ #99 :
Ноябрь 05, 2010, 23:38 »
Цитата: m_ax от Ноябрь 05, 2010, 13:21
Цитировать
Сама библиотека скомпилировалась кое-как. А пример не собирается: либо ошибка на этапе линковки, либо падает при запуске.
Ну я не телепат) Поподробнее опишите ситуацию. Что за ось, как собирали, какие ошибки ну и т.д.
Ось WinXP. ошибки на этапе выполнения. Валится при запуске.
Записан
m_ax
Джедай : наставник для всех
Offline
Сообщений: 2095
Re: Light Plot2D
«
Ответ #100 :
Ноябрь 05, 2010, 23:59 »
Цитата: nixman05 от Ноябрь 05, 2010, 23:38
Цитата: m_ax от Ноябрь 05, 2010, 13:21
Цитировать
Сама библиотека скомпилировалась кое-как. А пример не собирается: либо ошибка на этапе линковки, либо падает при запуске.
Ну я не телепат) Поподробнее опишите ситуацию. Что за ось, как собирали, какие ошибки ну и т.д.
Ось WinXP. ошибки на этапе выполнения. Валится при запуске.
Подправил.
Перед тем как будете компилировать, убедитесь, что путь указанный в plotter.pro, а именно
Код
C++ (Qt)
LP2D_LIB
=
c
:/
lightplot2d
-
1.0.1
/
lib
LP2D_INCLUDE
=
c
:/
lightplot2d
-
1.0.1
/
include
действительно указаны правильно.
После компиляции, если всё правильно сделано, должен получиться exe шник, в папке bin. Но, он не запуститься, поскольку линковщик не сможет найти либы от lightplot2d. Не расстраивайтесь: нужно к экзешнику просто кинуть получившуюся dll (lightplot2d1.dll) и запустить Plotter заново.
Всё должно получиться)
Записан
Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..
Arch Linux Plasma 5
nixman05
Гость
Re: Light Plot2D
«
Ответ #101 :
Ноябрь 06, 2010, 00:16 »
Я так и делал. Попробую с новой версией.
Записан
m_ax
Джедай : наставник для всех
Offline
Сообщений: 2095
Re: Light Plot2D
«
Ответ #102 :
Ноябрь 06, 2010, 00:22 »
А ещё хотел спросить:
Цитировать
Сама библиотека скомпилировалась кое-как.
В смысле кое-как? Как вы её компилировали?
Записан
Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..
Arch Linux Plasma 5
Страниц:
1
...
5
6
[
7
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...