QtでOpenGL:空のウィジェット(QGLWidget)
QGLWidget
QtでOpenGLを描画するには、QGLWidgetを用います。
QGLWidgetは、次の抽象メソッドを持ちます。
QGLWidgetは、次の抽象メソッドを持ちます。
メソッド | 説明 |
initializeGL() | OpenGLの初期化で呼ばれる |
resizeGL() | ウィンドウのリサイズが行われたとき呼ばれる |
paintGL() | 描画処理で呼ばれる |
QGLWidgetの使い方
QGLWidgetを使うには、クラスを派生させます。
ここでは、QGLWidgetを派生させたGLWidgetの作り方を示します。
ここでは、QGLWidgetを派生させたGLWidgetの作り方を示します。
- glwidget.h
#ifndef GLWIDGET_H
#define GLWIDGET_H
#include <QtOpenGL>
class GLWidget : public QGLWidget
{
Q_OBJECT
public:
GLWidget(QWidget *parent = 0);
~GLWidget();
protected:
virtual void initializeGL();
virtual void resizeGL( int w, int h );
virtual void paintGL();
};
#endif // GLWIDGET_H
- glwidget.cpp
#include "glwidget.h"
GLWidget::GLWidget(QWidget *parent):
QGLWidget(parent)
{
}
GLWidget::~GLWidget()
{
}
void GLWidget::initializeGL()
{
glClearColor(0.3, 0.3, 0.3, 1.0);
// 初期化処理
}
void GLWidget::resizeGL( int w, int h )
{
glViewport(0, 0, w, h);
// リサイズ時処理
}
void GLWidget::paintGL()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
//描画処理
}
プロジェクトとmainの準備
GLWidgetクラスを作成しただけではプログラムは動きません。
あと、必要なのはmain関数とプロジェクトファイルです。
あと、必要なのはmain関数とプロジェクトファイルです。
main関数は以下のように作ります。
- main.cpp
#include <QtGui/QApplication>
#include "glwidget.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
GLWidget w;
w.setGeometry(100, 100, 400, 300);
w.show();
return app.exec();
}
- sample.pro
QT += core gui opengl
TARGET = samole
TEMPLATE = app
SOURCES += main.cpp \
glwidget.cpp
HEADERS += glwidget.h
ここで、
QT += opengl
が必要です。
ビルドは、
% qmake % make
です。