QtとC++とOpenGLで三角錐もどきを表示

QtとC++OpenGLを使って三角錐に見えるものを表示してみた。

目の錯覚で立体的に三角錐に見えますが、実際は三角錐ではありません。
本当は、光を当てたりしなければいけないのですが(ライティング)、色の具合で三角錐に見えてしまいます。 みんなも三角錐に描画してる風に見えるはず、大丈夫かな😅

 


以下はソース.

#include <QApplication>
#include <QGLWidget>

class Sample : public QGLWidget {

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

protected:
  void initializeGL(){ }

  void resizeGL(int w, int h){ 
    glViewport(0,0,w,h);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glRotatef(20,0,0,1);
    glEnable(GL_DEPTH_TEST);
    glEnable(GL_MULTISAMPLE);
    glFrustum(-1.0, 1.0, -1.0, 1.0, 3.0, 10000.0);
    glMatrixMode(GL_MODELVIEW);
  }

  void paintGL() {
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glBegin(GL_QUADS);        

      glVertex3f(-0.5, 0.5, -10);

      glColor3f(1,0,0);
      glVertex3f(0.5, 0.5, -3);

      glColor3f(0,1,0);
      glVertex3f(0.5, -0.5, -3);

      glColor3f(0,0,1);
      glVertex3f(-0.5, -0.5, -6);

    glEnd();
    glFlush();    
  }
};

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

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