Version 3
Version 4
OpenGL(2D)
|
Qt4OpenGLグラフィックライブラリーでお絵かき我々は,Qtでの描画にはOpenGLを使っています.その使い方のメモです.ここでは,二次元の絵の描き方を中心に説明します.ここでプログラムは,主にQtのVersion 4.3で実行の確認を行いました. 目次初めての OpenGL実行例まずは,できるだけ簡単なプログラムを作成して,使ってみましょう.次のような折れ線を描くプログラムです.
プログラムソースプログラムは,3つのファイルから構成されます.描画クラスのヘッダーファイルと描画クラスのプログラム,メイン関数です.Qtでプログラムを作る場合の一般的な構成です.ここではOpenGLを使うために,QGLWidgetを継承したsimple_lineと言うクラス作成しています. 描画クラスのヘッダーファイル(simple_line.h). 001 #ifndef SIMPLE_LINE_H 002 #define SIMPLE_LINE_H 003 #include <QtOpenGL> 004 005 class simple_line:public QGLWidget 006 { 007 Q_OBJECT 008 009 public: 010 simple_line(QWidget *parent=0); 011 012 protected: 013 void initializeGL(); 014 void paintGL(); 015 }; 016 017 #endif OpenGLの命令を使って絵を描くために,QGLWidgetを継承したクラスを作成します.そのクラスでOpenGLの命令を使うだけです. 描画クラス(simple_line.cpp). 001 #include "simple_line.h" 002 003 //======================================================================= 004 // コンストラクター 005 //======================================================================= 006 simple_line::simple_line(QWidget *parent):QGLWidget(parent) 007 { 008 } 009 010 //======================================================================= 011 // OpenGLの初期化 012 //======================================================================= 013 void simple_line::initializeGL() 014 { 015 glClearColor(1.0, 1.0, 1.0, 1.0); // 画面クリアーの色(背景色) RGBA 016 } 017 018 019 //======================================================================= 020 // 絵を描くメンバー関数 021 //======================================================================= 022 void simple_line::paintGL() 023 { 024 glClear(GL_COLOR_BUFFER_BIT); 025 026 // ---- 直線 --------- 027 glColor3d(1.0, 0.0, 0.0); // 色指定(RGB) 028 glBegin(GL_LINE_STRIP); // 直線を描き始める 029 glVertex2d(0.2, 0.1); // 開始の座標 030 glVertex2d(0.4, 0.8); 031 glVertex2d(0.8, 0.5); // 終了の座標 032 glEnd(); // 直線の終了 033 } メイン関数(main.cpp). 001 #include <QApplication> 002 #include "simple_line.h" 003 004 int main(int argc, char *argv[]) 005 { 006 QApplication appli(argc, argv); 007 008 simple_line *gl = new simple_line; 009 gl->show(); 010 011 return appli.exec(); 012 } コンパイル方法コンパイルは以下のようにします.
以下は工事中 |