Russian Qt Forum
Ноябрь 25, 2024, 05:56 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2 3   Вниз
  Печать  
Автор Тема: OpenGL  (Прочитано 18141 раз)
¤Se®ega¤
Гость
« : Апрель 15, 2009, 13:42 »

Подскажите как передать картинку, нарисованную при помощи OpenGl.Например из приложения в приложение,ну или даже из одного класса в другой.
« Последнее редактирование: Апрель 15, 2009, 13:45 от ¤Se®ega¤ » Записан
spirit
Гость
« Ответ #1 : Апрель 15, 2009, 13:49 »

из класса в класс: по указателю, по ссылке.
по-подробнее можно?
Записан
¤Se®ega¤
Гость
« Ответ #2 : Апрель 15, 2009, 13:52 »

мня интересует не средства для передачи. меня больше интересует ЧТО передать.
Поподробнее:
одник класс генерит изображение
второй класс это изображение принимает и иотображает посредством Opengl.
Записан
spirit
Гость
« Ответ #3 : Апрель 15, 2009, 13:53 »

ничего не понял опять.  Улыбающийся QPixmap или QImage передавай.
Записан
¤Se®ega¤
Гость
« Ответ #4 : Апрель 15, 2009, 13:56 »

я только начинаю изучать, вот и сам не понимаю как сделать.мне необходимо в одной программе генерить какое-либо изображение (ye например просто вращение фигуры), в другой программе это изображение обображать.ЧТобы генерация/отображение были быстрее использовать надо Opengl/
« Последнее редактирование: Апрель 15, 2009, 13:59 от ¤Se®ega¤ » Записан
spirit
Гость
« Ответ #5 : Апрель 15, 2009, 14:01 »

берешь грабишь виджет где идет отрисовка при помощи QPixmap::grabWindow,
затем сохраняешь полученный результат в QByteArray вот таким образом
Код
C++ (Qt)
QPixmap pixmap;
QByteArray bytes;
QBuffer buffer(&bytes);
buffer.open(QIODevice::WriteOnly);
pixmap.save(&buffer, "PNG");
 
затем шлешь этот байтАррей куда надо.
в получающей проге делаешь обратную операцию про помощи QImage::fromData и отображаешь где надо.
Записан
¤Se®ega¤
Гость
« Ответ #6 : Апрель 15, 2009, 14:03 »

а можно ну уж совсем подробно про QPixmap::grabWindow?
Записан
¤Se®ega¤
Гость
« Ответ #7 : Апрель 15, 2009, 14:05 »

точнее про операцию перехвата  Строит глазки
Записан
spirit
Гость
« Ответ #8 : Апрель 15, 2009, 14:14 »

1.получение картинки
Код
C++ (Qt)
QPixmap MyGLRenderer::takeScreenShot() const
{
        return QPixmap::grabWindow(winId());//отличие этого метода от grabWidget в том,
        //что все окно (вместе с title и т.д.) будет сохранено в пиксмап. тут уже решай сам нужны ли тебе декорации
}
 
см. Screenshot Example в ассистанте
2.сохранение
Код
C++ (Qt)
QByteArray MyGLRenderer::imageToByteArray() const
{
        QPixmap pixmap = takeScreenShot();
        QByteArray bytes;
        QBuffer buffer(&bytes);
        buffer.open(QIODevice::WriteOnly);
        pixmap.save(&buffer, "PNG");
        return bytes;
}
 
3.отправка
ну тут тебе виднее как отправлять, через сокет, сохранение в файл.
4.восстановление изображения
Код
C++ (Qt)
...
QByteArray bytes = getScreenShot();//собственно функция получение изображения
QImage image = QImage::fromData(bytes, "PNG");
m_label->setPixmap(QPixmap::fromImage(image));
...
 
Записан
¤Se®ega¤
Гость
« Ответ #9 : Апрель 15, 2009, 14:16 »

А рисовать я так понял надо в QPixmap?
Записан
spirit
Гость
« Ответ #10 : Апрель 15, 2009, 14:17 »

где рисовать? grabWidget/grabWindow есть только у QPixmap.
Записан
¤Se®ega¤
Гость
« Ответ #11 : Апрель 15, 2009, 14:18 »

Генерируемую картинку рисовать при помощи Opengl я должен в QPixmap?
Записан
spirit
Гость
« Ответ #12 : Апрель 15, 2009, 14:20 »

м...ты ж в QGLWidget работаешь с OpenGL на сколько я понимаю.
вот картинку этого окна тебе сделать и надо. или я опять нихрена не понял?  Непонимающий
Записан
¤Se®ega¤
Гость
« Ответ #13 : Апрель 15, 2009, 14:21 »

Ну если в конечном итоге я должен отображить на QGLWdget, то думаю и генерить надо в подобном.
Записан
spirit
Гость
« Ответ #14 : Апрель 15, 2009, 14:26 »

так давай сначала, что тебе нужно:

-- ты русиешь картинки в QGLWidget, затем эту картинку тебе нужно сохранить и отправить другому приложению и
уже там ее отобразить?

-- или тебе просто нужно в одном приложении сгенерить картинку и отправить другому?

-- ты хочешь использовать QGLWidget для рисование картинки или уже есть рабочая программа,
которая при помощи QGLWidget рендерит какую-то инфу, а тебе нужно делать скриншоты того, что она рендерит?

сформулируй нормально, что тебе нужно, пожалуйста, а то адекватного ответа будешь ждать долго.  Улыбающийся
Записан
Страниц: [1] 2 3   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.157 секунд. Запросов: 21.