CreatorでOpenGLをはじめる方法メモ
- Qt4.6
- Qt4.7の場合はこちら
はじめかた
- プロジェクトの作成
ここではGUIアプリケーション作成を選択します。

プロジェクト名はhello_glとします。
パスは、ここでは"C:\work"としました。
パスは、ここでは"C:\work"としました。

OpenGLを使用するので、QtOpenGLにチェックを入れます。

基本クラスは、QWdigetを選択します。(後にQGLWidgetを設定するために)

これで、プロジェクト作成は完了です。
ソースコードの修正
次にソースコードを修正します。
下記のファイルは、自動で生成されると思います。
main.cpp widget.cpp widget.h widget.ui
main.cppは変更しません。
widget.uiはQtのユーザフォーム設定なので変更しません。
変更するのは、widget.cppとwidget.hです。
widget.uiはQtのユーザフォーム設定なので変更しません。
変更するのは、widget.cppとwidget.hです。
- widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QGLWidget> // <= 追加
namespace Ui {
class Widget;
}
class Widget : public QGLWidget { // <= QWidgetをQGLWdigetに変更
Q_OBJECT
public:
Widget(QWidget *parent = 0);
~Widget();
protected:
void changeEvent(QEvent *e);
virtual void initializeGL(); // <= 追加
virtual void resizeGL( int w, int h ); // <= 追加
virtual void paintGL(); // <= 追加
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
- widget.cpp
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QGLWidget(parent), // <= QWidgetをQGLWdigetに変更
ui(new Ui::Widget)
{
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
}
void Widget::changeEvent(QEvent *e)
{
QWidget::changeEvent(e);
switch (e->type()) {
case QEvent::LanguageChange:
ui->retranslateUi(this);
break;
default:
break;
}
}
void Widget::initializeGL() // <= 追加
{
glClearColor(0.3, 0.3, 0.3, 1.0);
}
void Widget::resizeGL( int w, int h ) // <= 追加
{
glViewport(0, 0, w, h);
glLoadIdentity();
glOrtho( -w/200.0, w/200.0, -h/200.0, h/200.0, -1.0, 1.0);
}
void Widget::paintGL() // <= 追加
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glColor3d(1.0, 0.0, 0.0);
glBegin(GL_POLYGON);
glVertex2d(-0.5, -0.5);
glVertex2d(0.5, -0.5);
glVertex2d(0.5, 0.5);
glVertex2d(-0.5, 0.5);
glEnd();
//glFlush();
}
コンパイル&実行
デバッグを実行(F5)します。
