QtとC++とOpenGLを使って三角形を表示するー

I wrote: 2016/11/10
I updated : 2017/06/03


※ここに書かれている方法は古いので、こっちでやったほうがベターです。

QtとC++OpenGLで三角形、正確には直角三角形を表示するよ!
OpenGLといえばGLUTやGLFWなどが有名かもしれませんが、個人的に慣れているQtを使います。

すごく簡単なサンプルプログラムなのでコードも短くて分かりやすいかなと思います。

少し解説するとQGLWidgetを継承したクラスは
 ①initializeGL()
 ②resizeGL(int w, int h)
 ③paintGL()
を実装します。

①は何もしてないです。私はしてないだけで何かをしてもOKです。
②は描画サイズを設定しています。
③ではまずglClear(GL_COLOR_BUFFER_BIT)で背景を初期化します。それでglBegin(GL_TRIANGLES)とglEnd()の間で直角三角形を描画します。三角形は3点を持つのでglVertex2dが3つあります。最後にglFlush()で完了です。

 


以下はコード

#include <QApplication>
#include <QGLWidget>

class Sample : public QGLWidget {
private:

public:
  Sample(QWidget *parent = NULL) : QGLWidget(parent) {
    this->setWindowTitle("Sample");
    this->resize(400, 400);
  }

protected:
  void initializeGL() { }

  void resizeGL(int w, int h) { 
    glViewport(0, 0, w, h);
  }

  void paintGL() { 
    glClear(GL_COLOR_BUFFER_BIT);
    glBegin(GL_TRIANGLES);
      glVertex2d(-0.9, -0.9);
      glVertex2d(0.9, -0.9);
      glVertex2d(0.9, 0.9);
    glEnd();
    glFlush();
  }
};

int main (int argc, char* argv[]) {
  QApplication app(argc, argv);
  Sample sample;
  sample.show();
  return app.exec();
}


実行されたアプリケーション
42