Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > масштабирование изображения OpenGL


Автор: hawk3500 14.4.2013, 17:01
Доброго времени суток.
Программирую на Qt и столкнулся с тем что встроенные в Qt методы изменения размера изображения очень медленные.
Переписал код под OpenGL но как изменить размер изображения не знаю...
Подскажите кто знает.
Код

#include "paint_gl.h"

Paint_GL::Paint_GL(QWidget *parent)
    : QGLWidget(parent)
{
     wid=500; hid=500; // начальный размер окна
     resize(wid,hid);
     IMG = new QImage("C:\\002.jpg");
     Time= new QTimer(this);
     bool K=  connect(Time,SIGNAL(timeout(void)),this,SLOT(TimeOut_l(void)));
     Time->start(150);
}

Paint_GL::~Paint_GL()
{

}
void Paint_GL::resizeEvent(QResizeEvent* EVA)
{
    QSize NewSize=EVA->size();
    wid=NewSize.width();
    hid=NewSize.height();
    glViewport (0, 0, wid, hid);
    return QGLWidget::resizeEvent(EVA);
}

void Paint_GL::TimeOut_l(void)
{
    update();
}

void Paint_GL::paintGL()
{
    Zeta=QGLWidget::convertToGLFormat(*IMG);
    glDrawPixels(IMG->width(),IMG->height(),GL_RGBA,GL_UNSIGNED_BYTE,Zeta.bits());
}


Автор: gldevAleksey 15.4.2013, 17:02
//--------------------------------------------------------------------

Код

struct RGBA
{
 unsigned char  r,g,b,a;
};



//--------------------------------------------------------------------


RGBA *rbitmap =new RGBA[64*64];

//--------------------------------------------------------------------



glRasterPos2i(100, 100);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glPixelZoom(100/ (double) 64, 100 / (double) 64);// вот эта функция и масштабирует битовый образ.
glDrawPixels(64,64,GL_RGBA,GL_UNSIGNED_BYTE,rbitmap);


//--------------------------------------------------------------------



Да, кстати, если интересует то glDrawPixels(64,64,GL_RGBA,GL_UNSIGNED_BYTE,rbitmap); не самый быстрый вывод 
битовых образов в библиотеке OpenGL.

 

Автор: Jeka178RUS 18.4.2013, 11:39
Масштабирование нужно только для просмотра или для последующего использования?

Если только для вывода тогда хватит использования видовой матрицы

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)