WonderWidget.h

#include <QGLWidget>
class WonderWidget: public QGLWidget
{
	Q_OBJECT

public:
	WonderWidget(QWidget* parent, int sourcewidth, int sourceheight, int destwidth, int destheight):
	QGLWidget(parent)
	{
		_sourcewidth = sourcewidth;
		_sourceheight = sourceheight;
		resize(destwidth, destheight);
	}

	void update(char* imgData);

protected:
     void initializeGL();
     void paintGL();
     void resizeGL(int width, int height);

	GLuint textureID;
	int _sourcewidth;
	int _sourceheight;
};

WonderWidget.cpp

#include "WonderWidget.h"
void WonderWidget::update(char* imgData)
{
	if (imgData != 0)
	{
		glBindTexture(GL_TEXTURE_2D, textureID);
		glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, _sourcewidth, _sourceheight, 0, GL_RGB, GL_UNSIGNED_BYTE, imgData); 
		glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
		glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);

	}

	updateGL();
}

void WonderWidget::initializeGL()
{
    glEnable(GL_DEPTH_TEST);
    glEnable(GL_CULL_FACE);
    glEnable(GL_TEXTURE_2D);


}

void WonderWidget::paintGL()
{
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
	glLoadIdentity();

	glBindTexture(GL_TEXTURE_2D, textureID);
	glBegin(GL_QUADS);
		glTexCoord2d(0,1);
		glVertex3d(0, 0, -1);

		glTexCoord2d(1,1);
		glVertex3d(1, 0, -1);

		glTexCoord2d(1,0);
		glVertex3d(1, 1, -1);

		glTexCoord2d(0,0);
		glVertex3d(0, 1, -1);
	glEnd();
	

}

void WonderWidget::resizeGL(int width, int height)
{
     glViewport(0, 0, width, height);

     glMatrixMode(GL_PROJECTION);
     glLoadIdentity();
     glOrtho(0, 1, 0, 1, 0.1, 2.0);
     glMatrixMode(GL_MODELVIEW);

}
wisar/fast-2d-widget.txt · Last modified: 2014/08/11 13:25 by tmburdge
Back to top
CC Attribution-Share Alike 4.0 International
chimeric.de = chi`s home Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0