![]() |
|
|
![]()
|
|
| hawk3500 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 246 Регистрация: 6.2.2009 Репутация: нет Всего: 2 |
Доброго времени суток.
Нужен пример простого вывода QImage через opengl. Не могу найти простой пример такого вывода. Если у кого есть поделитесь.... Заранее благодарен. С уважением, hawk3500 --------------------
воин dzen'a |
|||
|
||||
| Amp |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: 7 Всего: 17 |
У QGLWidget есть статический методо convertToGLFormat, который принимает на вход QImage и выдает тоже QImage пригодный к использованию в GL. Потом стандартно через glTexImage2D загружаешь текстуру в видеопамять, передавая последним аргументом сконвертированный QImage::bits().
|
|||
|
||||
| hawk3500 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 246 Регистрация: 6.2.2009 Репутация: нет Всего: 2 |
Не могли бы привести пример такого класса
с initializeGL() и paintGL()....у меня явно что то не так((( Заранее благодарен --------------------
воин dzen'a |
|||
|
||||
| Amp |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: 7 Всего: 17 |
Пример есть в стандартных примерах - opengl/hellogl
|
|||
|
||||
| hawk3500 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 246 Регистрация: 6.2.2009 Репутация: нет Всего: 2 |
Прочитав мануалы , я понял что вроде нет необходимости для вывода простого двумерного изображения обращаться к методам void initializeGL(); и
void paintGL();. Достаточно просто унаследовать свой класс у QGLWidget и вся работа с выводом изображения будет организованна аппаратнно. Так ли это? И второе что мне не ясно. У QImage есть метод scaled, который занимает много времени , нет ли у него аппаратного аналога? Добавлено через 3 минуты и 4 секунды http://symmetrica.net/qtworld/qtvideo.pdf --------------------
воин dzen'a |
|||
|
||||
| Amp |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: 7 Всего: 17 |
Да, можно выводить в QPainter в методе paintEvent() наследника QGLWidget-а - смотри пример opengl\2dpainting. Тогда initializeGL и paintGL не понадобятся. А можно просто в QPainter без QGLWidget-а рисовать, применяя матрицы трансорфмации. Еще вопрос, что быстрее - аппаратное ускорение QPainter в Qt не блещет производительностью. Впрочем есть варианты в виде QGraphicsView и QML, с ними может быть даже проще будет работать.
|
|||
|
||||
| hawk3500 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 246 Регистрация: 6.2.2009 Репутация: нет Всего: 2 |
Спасибо за ответы)
Сделал программу которая просто выводит изображение(файл) но при изменении размеров окна изображение начинает рисоваться в нескольких местах и вообще возникают какието не заданные мной линии.
Если не сложно подскажите что может быть не так... И ещё не совсем ясно , если прорисовка идёт через OpenGL то по нажатию PrintScreen и вставив результат из буффера в пэйнт я должен увидеть чёрный квадрат...а тут картинка. --------------------
воин dzen'a |
|||
|
||||
| Amp |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: 7 Всего: 17 |
Ты зачем-то на каждый вызов paintGL конвертируешь изображение и рисуешь через glDrawPixels, а не посредством полигонов и текстур - это все очень сильно просаживает производительность. Мой совет - если не знаком с OpenGL, то лучше и не используй его. Рисуй через QPainter.
Ничего подобного. Это сообщение отредактировал(а) Amp - 14.4.2013, 22:50 |
|||
|
||||
| Jeka178RUS |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 85 Регистрация: 3.9.2012 Репутация: нет Всего: нет |
Вот рабочий пример на шейдерах, только все самое свежее ))
Инициализация
Рисование:
Скриншот берет отлично |
||||
|
|||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |