Название: Рисование QGraphicsScene в отдельном потоке Отправлено: Sasha от Октябрь 31, 2013, 17:07 Здравствуйте,
Можно ли рисовать сцену не в главном потоке? Или можно её переместить в другой поток? Вобщем чтоб графикой занимался не главный поток. Название: Re: Рисование QGraphicsScene в отдельном потоке Отправлено: Igors от Октябрь 31, 2013, 18:44 нет
Название: Re: Рисование QGraphicsScene в отдельном потоке Отправлено: Old от Октябрь 31, 2013, 18:49 Здравствуйте, Можно что бы первый поток занимался графикой, а другие занимались вычислениями. Нет такого понятия - главная нить, она ни главнее других нитей. :)Можно ли рисовать сцену не в главном потоке? Или можно её переместить в другой поток? Вобщем чтоб графикой занимался не главный поток. Название: Re: Рисование QGraphicsScene в отдельном потоке Отправлено: Fregloin от Ноябрь 01, 2013, 10:48 можно рисовать в pixmapы или image в отдельном потоке, а отображать в главном, но это конечно повысит расход памяти, зато увеличит быстродейсивие
Название: Re: Рисование QGraphicsScene в отдельном потоке Отправлено: Igors от Ноябрь 01, 2013, 11:21 Нет такого понятия - главная нить, она ни главнее других нитей. :) Хммм... не уверен. Напр выход из главной означает завершение приложения, а выход из других - нетНазвание: Re: Рисование QGraphicsScene в отдельном потоке Отправлено: Old от Ноябрь 01, 2013, 11:57 Напр выход из главной означает завершение приложения, а выход из других - нет Если вы будете выходить из любой нити по exit, они все будут главными. :)Название: Re: Рисование QGraphicsScene в отдельном потоке Отправлено: Sasha от Ноябрь 01, 2013, 12:21 Здравствуйте, Можно что бы первый поток занимался графикой, а другие занимались вычислениями. Нет такого понятия - главная нить, она ни главнее других нитей. :)Можно ли рисовать сцену не в главном потоке? Или можно её переместить в другой поток? Вобщем чтоб графикой занимался не главный поток. Название: Re: Рисование QGraphicsScene в отдельном потоке Отправлено: Sasha от Ноябрь 01, 2013, 12:41 можно рисовать в pixmapы или image в отдельном потоке, а отображать в главном, но это конечно повысит расход памяти, зато увеличит быстродейсивие Попытался это сделать, но:1) почему-то перестали отображаться картинки. С этим пока не разбирался. 2) программа начала падать. Напомню, что я пытаюсь перенести в отдельный поток отрисовку графической сцены, которую рисую ф-ей render. Если просто рисую в буфере, скажем эллипс, то всё хорошо, а вот с ф-ей render туго. Точнее, она срабатывает, но падения начинаются тогда, когда со сценой что-то происходит. Похоже, что просто накладываются обращения к графическим элементам (один поток обращается к ним для рисования, а второй для выполнения над ними некоторых действий). Т.е. нужно всё синхронизировать, но как это сделать, до конца не понятно. Можно попробовать вставить блокировку при приёме сообщений сцены и при отрисовке, но не факт что этого будет достаточно, да и это слишком крупно и, возможно сведёт на нет всё преимущество выноса отрисовки в отдельный поток (т.е. пока будет идти рисование всё-равно сообщения приниматься не будут). |