Visual StudioでOpenGLを使うための準備

連載一覧 "re:ゼロから始めるOpenGL 2.1"

このレッスンでは初めてOpenGLを触るという人にもわかりやすく解説していくつもりです。レベルとしては簡単にC言語を触ったことがあるような人を対象としています。

OpenGL2.1としていますが、古い機能はあまり使わずに、OpenGL3.xやOpenGL4.xなど新しいOpenGLのバージョンにも応用しやすいようにするつもりです。

どうしてわざわざOpenGL2.1で解説するのかというと、新しいバージョンのOpenGLは対応していないパソコンも多くあることになります。
もし、作ったソフトなどを公開するならばたくさんの人に使ってほしいものです。
そういった場合に古いOpenGLを使わなければならないってことが往々にしてあるからです。

例えば、もっとも有名なイラストソフトClipStudioはOpenGL2.1、他にもLive2dというソフトはOpenGL3.3を使っていると考えられます。
このように商用ソフトでもわざわざ最新でないOpenGLを使用しています。

使う言語はC++ですが、C++独自の機能はできるだけ使わずに、使うにしてもその都度説明していくので、ご安心ください。
C++は難しいとこも多いですが、動的配列など機能が増えて非常に便利です。

OpenGLはバージョンによって互換性を残しているので、そのせいで非常に煩雑になっているところもありまして、学習するのに苦労する場面も多いです。

そういった部分を解消できたらと思います。
僕もまだまだ未熟ものですが、誰かのためになると信じて書いていくのでよろしくお願いいたします。

Visual Studioのインストール

バージョンは2013でも2015、2017どれでも構いません。既にインストールしてある人は、次に行ってください。

パソコンにVisual Studioがインストールされてない人は、この記事に従ってインストールをしてください。

Visual Studio Community 2017をインストールする

OpenGL関連の初期設定

VisualStudioを起動して、ファイル→新規作成→プロジェクトと進み、VisualC++のコンソールアプリケーションを選択します。
プロジェクト名は適当につけてください。

完了を押します。

プロジェクト→NuGetパッケージ管理と進み、参照をクリックし、「nupengl」と検索します。

nupengl.coreを選択するとインストールボタンが出てくるので、インストールします。
これはGLFW,GLEW,FreeGLUTなどのライブラリを使えるようにしてくれています。

NuGetを使うと「サイトからファイルをダウンロード。インストールしてパスを通して……」のような作業を勝手にやってくれます。
便利すぎてバカになりそうです。。。

ここで簡単に説明しておきますが、OpenGLはCG描画におけるコアな機能のみを含んでいます。
つまり、例えばゲームを作ろうとしたときにOpenGLを使用すると、音楽を鳴らしたり、WindowOSやMacOSなどのOS上でCGを描画するためのウィンドウを生成するためには他のライブラリを使う必要があります。

ウィンドウを生成してくれるライブラリがGLUT、FreeGLUT、GLFWにあたります。
どれか1つを使用します。
GLUTはOpenGLを作ってるとこが作成したものですが、すでにメンテナンスされていません。
FreeGLUTはGLUTの後継ライブラリにあたります。
ちなみにこの他にもwxWidgetsやQtなどもありますが、OpenGLの学習のために使うにはあまりにも仕様が大きすぎます。

GLEWはOpenGLの機能を拡張するためのもので、Gleなど同様のライブラリもあります。
OpenGLのバージョンによっては対応していない機能を提供してくれるものだと思います。

次にglmライブラリをインストールします。
glmはOpenGL用の行列関連ライブラリで非常に利便性が高く、使わない理由がありません。
同様にインストールします。

※重要 これをやらないとすべてのOpenGL関数が使えません。

プロジェクト→プロジェクト名のプロパティ→構成プロパティ→リンカー→入力→追加の依存ファイル、と進み、編集を押して「opengl32.lib」と入力し、OKを押します。

OpenGL本体はwindowsOSに含まれているので、これだけでOKです。
新しくダウンロードする必要はありません。

以上で基本的な設定は終了です。

NuGetを使わなかったらはるかに長い説明になっていたと思います。
NuGet優秀すぎです。

連載一覧 "re:ゼロから始めるOpenGL 2.1"

あわせて読みたい