qt5.9.2 openglを設定!(穴あり)


OpenGLはアプリケーションプログラミングインターフェースAPIであり、コンピュータグラフィックハードウェアにアクセスしやすいパッケージライブラリである.
いくつかの概念があります.
≪モデル|Model|oem_src≫:ジオメトリ内の点線面を組み合わせたデータセット
レンダー:モデルからグラフィックを作成するプロセス.
シェーディング:GPUで実行されるコードにコンパイルされます.Openglにはコンパイルツールが含まれており、シェーディングされたソースコードをコンパイルします.
OpenGLは、複数のライブラリを含むコンピュータグラフィックを操作する集合です.一般的にglfw、glut、freeglutなどがあります.
本文はfreeglutをダウンロードすることによってその原理を初歩的に学習し理解する.
1ダウンロードインストール
freeglutライブラリには32ビットと64ビットの2つのバージョンがあり、Qtの構成に応じて自分で選択します.
ダウンロード先:http://www.transmissionzero.co.uk/software/freeglut-devel/ 
2構成
msvc環境構成(64ビット):
1) .解凍後freeglutファイルのbinファイルの下のx 64ファイルの下のfreeglut.dll、QTへコピーするインストールパスD:QtQt 5.2.4\5.2.4\msvc2017_64binディレクトリの下;2) .解凍後freeglutファイルのincludeファイルの下にあるGLフォルダをQTのインストールパスD:QtQt 5にコピーする.2.4\5.2.4\msvc2017_64includeディレクトリの下;3) .解凍後freeglutファイルのlibファイルの下のx 64ファイルの下のfreeglut.lib,インストールパスD:QtQt 5.2.4\5.2.4\msvc2017_64libディレクトリの下;
MinGW環境構成(32ビットバージョン):
1) .解凍後freeglutファイルのbinファイルの下のfreeglut.dll、QTへコピーするインストールパスD:QtQt 5.2.4\5.9.4\mingw53_32binディレクトリの下;2) .解凍後、freeglutファイルのincludeファイルの下にあるGLファイルを、QTのインストールパスD:QtQt 5にコピーする.2.4\5.2.4\mingw53_32includeディレクトリの下;3) .解凍後freeglutファイルのlibファイルの下のlibfreeglut.a、libfreeglut_static.aファイル、QTへコピーするインストールパスD:QtQt 5.2.4\5.2.4\mingw53_32libディレクトリの下;
上記のような構成の利点は、コンパイル時に-LD:/Qt/Qt 5を使用しなくてもよいことです.9.2/5.9.2/msvc2017_64/libライブラリのディレクトリを指定し、使いやすいです.
3使用
#3つ目は、複数のライブラリが同じフォルダの下にある場合、接続にはLIBS+=-LD:/Qt/Qt 5を使用する.9.2/5.9.2/msvc2017_64/lib -lfreeglut -lOpenGL32
MinGWバージョン:
win32:LIBS += -lOpengl32\                          -lglu32\                          -lglut\                          -lfreeglut
ライブラリの使用時に接頭辞libおよび接尾辞はない.a .lib、しかし接頭辞-lがあります
最後にcppに#includeを加えてglutの関数を使用できます.
使用するソースコードを添付します.
#include "GL/glut.h"

//      
void init() {
    glClearColor(0.1, 0.1, 0.4, 0.0);
    glShadeModel(GL_SMOOTH);
}

//       
void display() {

    //        
    glClear(GL_COLOR_BUFFER_BIT);

    //      
    glBegin(GL_TRIANGLES);
    glColor3f(1, 0, 0);
    glVertex3f(-1, -1, -5);
    glColor3f(0, 1, 0);
    glVertex3f(1, -1, -5);
    glColor3f(0, 0, 1);
    glVertex3f(0, 1, -5);
    glEnd();
    //       
    glFlush();
}

//           
void reshape(int w, int h) {
    glViewport(0, 0, w, h);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(60.0, (GLfloat)w/(GLfloat)h, 0.1, 100000.0);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
}

int main(int argc, const char * argv[]) {
    //        
    glutInit(&argc, const_cast(argv));
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);

    //      
    glutInitWindowSize(500, 500);
    glutInitWindowPosition(100, 100);
    glutCreateWindow(argv[0]);

    init();
    glutReshapeFunc(reshape);
    glutDisplayFunc(display);

    //        
    glutMainLoop();
    return 0;
}