| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > QImage + OpenGL |
| Автор: hawk3500 13.4.2013, 14:19 |
| Доброго времени суток. Нужен пример простого вывода QImage через opengl. Не могу найти простой пример такого вывода. Если у кого есть поделитесь.... Заранее благодарен. С уважением, hawk3500 |
| Автор: Amp 13.4.2013, 16:07 |
| У QGLWidget есть статический методо convertToGLFormat, который принимает на вход QImage и выдает тоже QImage пригодный к использованию в GL. Потом стандартно через glTexImage2D загружаешь текстуру в видеопамять, передавая последним аргументом сконвертированный QImage::bits(). |
| Автор: hawk3500 13.4.2013, 21:00 |
| Не могли бы привести пример такого класса с initializeGL() и paintGL()....у меня явно что то не так((( Заранее благодарен |
| Автор: Amp 13.4.2013, 22:15 |
| Пример есть в стандартных примерах - opengl/hellogl |
| Автор: hawk3500 14.4.2013, 11:12 |
| Прочитав мануалы , я понял что вроде нет необходимости для вывода простого двумерного изображения обращаться к методам void initializeGL(); и void paintGL();. Достаточно просто унаследовать свой класс у QGLWidget и вся работа с выводом изображения будет организованна аппаратнно. Так ли это? И второе что мне не ясно. У QImage есть метод scaled, который занимает много времени , нет ли у него аппаратного аналога? Добавлено через 3 минуты и 4 секунды http://symmetrica.net/qtworld/qtvideo.pdf |
| Автор: Amp 14.4.2013, 17:36 |
| Да, можно выводить в QPainter в методе paintEvent() наследника QGLWidget-а - смотри пример opengl\2dpainting. Тогда initializeGL и paintGL не понадобятся. А можно просто в QPainter без QGLWidget-а рисовать, применяя матрицы трансорфмации. Еще вопрос, что быстрее - аппаратное ускорение QPainter в Qt не блещет производительностью. Впрочем есть варианты в виде QGraphicsView и QML, с ними может быть даже проще будет работать. |
| Автор: hawk3500 14.4.2013, 19:44 | ||
| Спасибо за ответы) Сделал программу которая просто выводит изображение(файл) но при изменении размеров окна изображение начинает рисоваться в нескольких местах и вообще возникают какието не заданные мной линии.
Если не сложно подскажите что может быть не так... И ещё не совсем ясно , если прорисовка идёт через OpenGL то по нажатию PrintScreen и вставив результат из буффера в пэйнт я должен увидеть чёрный квадрат...а тут картинка. |
| Автор: Jeka178RUS 15.4.2013, 08:15 | ||||
| Вот рабочий пример на шейдерах, только все самое свежее )) Инициализация
Рисование:
Скриншот берет отлично |