Visual Studio Express 2012 で Cg のプロジェクトを作って実行するところまで
はじめに
Unityのシェーダ言語 ShaderLab が、内部ではCgの仕様でコーディングするので、ちょっとばかり純正Cgを触ってみようかな、というのが動機。
あとで要らなかったなーこの勉強、って思っている予感もします。
環境
- Windows 7 Professional 64bit
- Visual Studio Express 2012 for Windows Desktop
手順
Cg編00 - OpenGL de プログラミング - Seesaa Wiki(ウィキ)
基本的な手順はすべてこちらの通りですが、わずかに填まった点を覚え書きします。
glut
Cg Tool Kit をインストールすると、Cgとセットでglutの一式が C:\Program Files (x86)\NVIDIA Corporation\Cg
以下に導入されます。一部本家(Nate Robins - OpenGL - GLUT for Win32)から改変されているようなので、私はnvidiaのものを使うことにして、以前本家から入れたglutは削除しました
ちなみにglutはここ(準備編01 - OpenGL de プログラミング - Seesaa Wiki(ウィキ))の説明の通り入れたので、それらのファイルを消せばOKです。
プロジェクトの作成
Visual Studio Express 2012を起動して、
FILE > New Project > Templates > Visual C++ > General >Empty Project
を選択し、Project name, Solution name を適当に付けてOK
パスを通す
参考サイトさまに「パスが通るようにする。」とさくっと書いてありますが、詳細に書くと以下の感じ。
プロジェクトを作るごとに設定するのでは無く、自分のVisual C++ の全プロジェクトの標準VC++ディレクトリとして登録しておくことも出来るようですが、VS 2012 としては追加の依存関係はプロジェクトごとに指定するのが標準のようなので、ここではプロジェクトごとの設定の仕方を説明します。
Solution Explorer > 作ったプロジェクトを右クリック > Properties > VC++ Directories
- "Executable Directories" に
C:\Program Files (x86)\NVIDIA Corporation\Cg\bin
を追加 - "Include Directories" に
C:\Program Files (x86)\NVIDIA Corporation\Cg\include
を追加 - "Library Directories" に
C:\Program Files (x86)\NVIDIA Corporation\Cg\lib
を追加
先述の通りglutも Cg Tool Kitと一緒にインストールされる物を使うことにしたので、上述でちゃんとインクルード、リンクされるようになります。
追加の依存ファイルを設定する
lib は Library Directories にディレクトリを追加するだけでは見つけてくれないので、ちゃんと指定します。
Solution Explorer > 作ったプロジェクトを右クリック > Properties > Linker > Input
- "Additional Dependencies"に
cg.lib
cgGL.lib
を追加
コーディング
あとは、試しに
Cg編02::まとめ - OpenGL de プログラミング - Seesaa Wiki(ウィキ)
の main.cpp
vertex.cg
fragment.cg
の3ファイルをプロジェクトに作成・追加して、ビルド、実行してみます。
おまけ : 64bit 対応
あまり意味は無いのですが、Cgのライブラリには64ビット版の lib, dll も用意されているので、 VS Express ながら64bitコンパイル、ビルドしてみます。
まず、VS Express 2012 でプロジェクトを64bitプラットフォームに切り替える方法はこちら参照
VC2012 Expressで64bitビルド | あみだがみねのもろもろ備忘録
その上で、先ほどプロジェクトに通したパスを書き換えます
- "Executable Directories" で
C:\Program Files (x86)\NVIDIA Corporation\Cg\bin.x64
に変更 - "Library Directories" で
C:\Program Files (x86)\NVIDIA Corporation\Cg\lib.x64
に変更 - "Include Directories" は32bitの時のままで大丈夫。
はじめ.x64
とつくディレクトリとつかないディレクトリの両方のパスを加えていたところ、リンクエラーが出ました。必要な方「だけ」をパスに入れておくのが良いようです。
以上です。