OpenGLをプログラミングするためにWindowsを構成します

この投稿は初心者向けです。 Visual Studioの構成はカバーしていません 彼は、OpenGLアプリケーションをコンパイルするためにいくつかのテキストエディターを構成する方法、またはコンソールから手動でこれを行う方法を教えます。

最近、ついに、 OpenGLプログラミングガイド第8版がリリースされました。私は2年以上待っていました。 以前、すばらしいSublime Text 2テキストエディターに出会い、重いVisual Studioをインストールする代わりに、それを構成することにしました。

そのため、まず最初にコンパイラが必要です-G ++に決めました。 これはGCCの一部であり、WindowsポートはMinGWと呼ばれます。 それから始めましょう:

ミンウ

公式サイトからインストーラーをダウンロードし実行します。 インストール中に新しいパッケージをすぐにダウンロードするか、後で手動で更新するかを選択できます。 Fortran、Ada、ObjCコンパイラは必要ありません。これらは省略できます。 MSYS Basic Systemが便利になるかもしれません。 アドレスとして「 C:\MinGW 」を指定しましたが、気になる場合は、別のアドレス、たとえば「 C:\Program Files\Common Files\MinGW 」を選択できます。

インストール後、2つの新しいフォルダーをPATH システム変数に追加します :「 MinGW\bin 」および「 MinGW\msys\1.0\bin 」。 これを行うには、 [スタート]-> [コントロールパネル]-> [システム]-> [システムの詳細設定]に移動します。 [ 詳細設定 ]タブで、下の[ 環境変数 ]ボタンを押します。 システム変数のリストから「 パス 」を選択し、セミコロンを介して「 MinGW\bin 」および「 MinGW\msys\1.0\bin 」フォルダーに完全なアドレスを追加します。

インストール中に新しいパッケージをダウンロードすることを選択しなかった場合は、必要なパッケージを手動で更新する必要があります。 これを行うには、コンソールを開き( Win + R- > cmd )、次のコマンドを記述します。
 mingw-get update 
利用可能なパッケージに関する情報を更新します。
 mingw-get show g mingw-get show g++ 
gccおよびg ++パッケージのフルネームを表示し、
 mingw-get upgrade mingw32-gcc mingw-get upgrade mingw32-gcc-g++ 
これらのパッケージをMinGWで利用可能な最新バージョンに更新します。

コンパイラができたので、必要なOpenGLライブラリのインストールを進めることができます。

フリーグルト

OpenGLはグラフィックスのみに適用されるAPIであるため、ウィンドウの作成や入力デバイスの処理のための関数は含まれていません。 さらに、この問題の解決策はオペレーティングシステムによって異なります。 したがって、それは別のライブラリに取り込まれ、 GLUT -OpenGL Utility Toolkitと呼ばれました。 ただし、このライブラリの最後のリリースはかなり前のことでしたが、現在はfreeglutに置き換えられています

公式WebサイトからMinGWのバイナリをダウンロードします 。 「 C:\Windows\System32 」(x86の場合)または「 C:\Windows\SysWOW64 」(x64の場合)、またはPATHで指定されているその他のフォルダーにあるbinフォルダーからfreeglut.dllします。 includeフォルダーとlibフォルダーの内容は、「 MinGW\include 」と「 MinGW\lib 」(簡単になります)、または作成されたフォルダー「 MinGW\freeglut\include 」と「 MinGW\freeglut\lib 」をMinGW\freeglut\libます。

それはすべてfreeglutです。 有効にするには、 #include <GL/freeglut.h>追加し#include <GL/freeglut.h>

輝いた

glewライブラリを使用すると、ビデオカードがサポートするものとしないものを判別できます 。 私たちの場合、そのインストールはもう少し複雑です。
公式サイトからソースをダウンロードします。これは、バイナリがVisual Studio用に強化されており、動作しないためです。 次に、これらのソースをコンパイルする必要があります。 私はこれについてほとんど何も理解していないので、Googleに目を向け、 ここで助けを見つけまし
ダウンロードしたアーカイブを解凍し、コンソールを開き、結果のフォルダーに移動して、次のコマンドを記述します。
 gcc -DGLEW_NO_GLU -O2 -Wall -W -Iinclude -DGLEW_BUILD -o src/glew.o -c src/glew.c gcc -shared -Wl,-soname,libglew32.dll -Wl,--out-implib,lib/libglew32.dll.a -o lib/glew32.dll src/glew.o -L/mingw/lib -lglu32 -lopengl32 -lgdi32 -luser32 -lkernel32 ar cr lib/libglew32.a src/glew.o 
その結果、libフォルダーに3つのファイルglew32.dllglew32.dll.aおよびglew32.a
glew32.dllコピーしたのと同じ場所にglew32.dllコピーします。残りの2つは、フォルダー「 MinGW\lib 」または「 MinGW\glew\lib 」にあります。
includeフォルダーから、コンテンツを「 MinGW\include 」または「 MinGW\glew\include 」にコピーします。

それはすべて光り輝いています。 有効にするには、 #include <GL/glew.h>を追加する必要がありますが、他のglライブラリを接続する前にこれを行う必要があります。

パフォーマンスを確認する

最小限のtest.cppを作成します。
 #include <iostream> #include <GL/glew.h> #include <GL/freeglut.h> #include <GL/gl.h> int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGBA); glutInitWindowSize(512, 512); glutInitContextVersion(4, 1); //  OpenGL,     glutInitContextProfile(GLUT_CORE_PROFILE); glutCreateWindow(argv[0]); if (glewInit()) { std::cerr << "Unable to initialize GLEW ... exiting\n"; exit(EXIT_FAILURE); } glutMainLoop(); } 

glutInitContextVersion関数に注意してください-OpenGLの指定されたバージョンのコンテキストの作成に失敗した場合、プログラムを終了します。 ビデオカードがサポートするOpenGLのバージョンを確認するには、その仕様を確認するか、 公式サイトからglewinfo.exeバイナリをダウンロードして、 binフォルダーからglewinfo.exeを実行します。 glewinfo.txtファイルが生成されます。このファイルには、ビデオカードがサポートするものとしないものの詳細が記載されています。 最新のビデオドライバをインストールすることにより、機能を拡張できる場合があります。

コンソールを開き、 test.cppがあるフォルダーに移動して、次のコマンドを記述します。
 g++ -o test.exe test.cpp -lglew32 -lfreeglut -lopengl32 -lglu32 -Wl,--subsystem,windows 
freeglut glewfreeglut glew別々に作成した場合は、適切な追加のincludeフォルダーとlibフォルダーをここでさらに指定する必要includeあります。 次に、コマンドの例は次のようになります。
 g++ -o test.exe test.cpp -lglew32 -lfreeglut -lopengl32 -lglu32 -Wl,--subsystem,windows -I"C:\MinGW\freeglut\include" -L"C:\MinGW\freeglut\lib" -I"C:\MinGW\glew\include" -L"C:\MinGW\glew\lib" 

-Wl,--subsystem,windowsフラグは、コンソールではなくグラフィカルアプリケーションを作成するようコンパイラーに指示します。
すべてがtest.exe場合、 test.exeファイルをtest.exeする必要があります。これは、起動すると、白い512x512ウィンドウを作成します。

アプリケーションを共有する場合は、実行可能ファイルとともに、使用するライブラリfreeglut.dllおよびglew32.dllを転送することを確認してglew32.dll

崇高なテキスト2

最後に、Sublimeのセットアップ例を示します。 ここからダウンロードできます、英語の入門ビデオチュートリアルはここで見ることができます
インストール後、C ++ビルド構成ファイルを開きます。
" C:\Users\%Username%\AppData\Roaming\Sublime Text 2\Packages\C++\C++.sublime-build "
名前を付けてコピーを保存します
" C:\Users\%Username%\AppData\Roaming\Sublime Text 2\Packages\User\C++\++ OpenGL.sublime-build "


 "cmd": ["g++", "${file}", "-o", "${file_path}/${file_base_name}"], 
ライブラリを接続することにより補完されます:
 "cmd": ["g++", "${file}", "-o", "${file_path}/${file_base_name}", "-lfreeglut -lopengl32 -lglew32 -Wl,--subsystem,windows"], 

同様に、行
 "cmd": ["bash", "-c", "g++ '${file}' -o '${file_path}/${file_base_name}' && '${file_path}/${file_base_name}'"] 
補完する
 "cmd": ["bash", "-c", "g++ '${file}' -o '${file_path}/${file_base_name}' -lglew32 -lfreeglut -lopengl32 -lglu32 -Wl,--subsystem,windows && '${file_path}/${file_base_name}'"] 
freeglutとglewの下に個別のフォルダーを作成した場合、これらのコマンドは、追加のincludeフォルダーとlibフォルダーのアドレスを示すことで補足する必要があります。

Sublimeがキリル文字をコンソールに出力することを拒否しないために、
 "selector": "source.c, source.c++", 
加える
 "encoding": "cp1251", 

test.cpp開いたので、[ ツール]-> [システムのビルド]-> [C ++ OpenGL]を選択します
Ctrl + Bを押してコンパイルし、 Ctrl + Shift + Bを押してコンパイルして実行します。

それだけです!

UPD :最新バージョンのgl関数を使用したコードに関しては、 GL/gl.hヘッダーファイルを接続するだけでは不十分であることが判明しました。 古いバージョン1.1が含まれており、このファイルは更新されていません。 それに加えて、 GL/glext.h (最新バージョンはここからダウンロードする必要があります)とGL/wglext.hここから )を接続する必要があります。 Linuxの場合、最後のファイルはGL/glxext.hlink )に置き換えられます。 ダウンロードしたファイルは、アドレス「 MinGW/include/GL/ 」で廃止されたバージョンに置き換える必要があります。

Source: https://habr.com/ru/post/J177885/


All Articles