[ create a new paste ] login | about

Link: http://codepad.org/Pym1P6sm    [ raw code | fork ]

C++, pasted on May 19:
// glwindow.hpp

#ifndef _OPENGL_WINDOW_
#define _OPENGL_WINDOW_

#include <QGLWidget>

class GLWindow : public QGLWidget
{
	Q_OBJECT;
public:
	GLWindow(QWidget *parent = 0) : QGLWidget(parent)
	{ }
protected:
	void initializeGL();
	void resizeGL(int, int);
	void paintGL();
};

#endif

// glwindow.cpp

#include "glwindow.hpp"
#include <cstdlib>

void GLWindow::initializeGL()
{
	float r = std::rand() / (RAND_MAX + 1.0f);
	float g = std::rand() / (RAND_MAX + 1.0f);
	float b = std::rand() / (RAND_MAX + 1.0f);

	glClearColor(r, g, b, 0.0);
}

void GLWindow::resizeGL(int w, int h)
{
	glViewport(0, 0, (GLint)w, (GLint)h);
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();

	glOrtho(-100.0, 100.0, -100.0, 100.0, -1.0, 1.0);

	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();
}

void GLWindow::paintGL()
{
	glClear(GL_COLOR_BUFFER_BIT);
	glColor3f(1.0, 0.0, 0.0);
	glRectf(-10.0, 10.0, -10.0, 10.0);
	glFlush();
}

// main.cpp

#include <QtGui>
#include <cstdlib>
#include <ctime>
#include "glwindow.hpp"

int main(int argc, char *argv[])
{
	QApplication app(argc, argv);
	GLWindow *win = new GLWindow();
	GLWindow *child = new GLWindow(win);

	std::srand(std::time(0));

	child->resize(100, 100);
	win->resize(400,400);

	win->show();
	child->show();
	app.exec();

	delete win;
	// no need to delete child because QGLWidget destructor of _win_ is already do it.
	return 0;
}


Create a new paste based on this one


Comments: