自習室

こもります

Visual Studio Express 2012 で Cg のプロジェクトを作って実行するところまで

はじめに

Unityのシェーダ言語 ShaderLab が、内部ではCgの仕様でコーディングするので、ちょっとばかり純正Cgを触ってみようかな、というのが動機。

あとで要らなかったなーこの勉強、って思っている予感もします。

環境

手順

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ファイルをプロジェクトに作成・追加して、ビルド、実行してみます。

f:id:AMANE:20140214011201p:plain

おまけ : 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 とつくディレクトリとつかないディレクトリの両方のパスを加えていたところ、リンクエラーが出ました。必要な方「だけ」をパスに入れておくのが良いようです。

以上です。