以下のお話は、OpenGL/DirectXを使いこなす猛者または初学者のためのTipsです。
NVIDIAが開発者向けに公開している技術サンプル集で、『NVIDIA SDK 9.52』という古いものがあります。
これ、すでに技術的にはかなり時代遅れになっているものもあるんですが、中には今でも参考になるサンプルもあったりします。
で、試したいのですが、最新のVisual Studioだとどうもビルドがうまく通らなかったり、色々大変です。
そこで、NVIDIA SDK 9.52のサンプルが使用しているバージョンである、Visual Studio 2003を使って解決する方法が本記事です。
目的:NVIDIA SDK 9.52のサンプルをビルド・実行したい。
問題:最新のVisual Studioだとビルドがうまく通らない。
解決:Windows XP、Vistaまたは7に、Visual Studio 2003を無理やりインストールする。
(注意:XPはともかく、Vistaおよび7では、Visual Studio 2003のインストール・実行を本来サポートしていません。あくまで、自己責任でお願いします。何か問題が起きても、当方は責任を負えません)
Visual Studio 2003を入手する
以下のいずれかの方法で入手してください。
・どこかに偶然売れ残っているパッケージを探し、購入する。
・MSDNサブスクリプションに契約し、期間内に旧バージョンの製品を入手する。
http://www.microsoft.com/japan/msdn/subscriptions/
今でも入手可能なのかは、すみませんが確認がとれていません。Microsoftに問い合わせるしかないですね。
このステップがうまくいかないと、この記事の意味がないですね。ええ(汗)
その場合はもうあきらめて、最新のVisual Studioでソースをごにょごにょしてなんとかビルド通してください。
Visual Studio 2003をインストールする。
Windowsに、Visual Studio 2003をどうにかしてインストールします。
Windows 7の場合は、こちらのサイト様の情報を参考にしてください。
http://n225fut.blog79.fc2.com/blog-entry-855.html
NVIDIA SDK 9.52を入手する
以下のページからダウンロードした場合、インストーラーが32bit環境以外のWindowsを拒否してしまい、64bit環境のWindowsではインストールができません。
https://developer.nvidia.com/nvidia-graphics-sdk-11
そこで、以下のページから、サンプルのzipファイルを個別にダウンロードします。面倒ですが、根気よくやってください。
http://developer.download.nvidia.com/SDK/9.5/Samples/samples.html
SDKの各サンプルをビルドする。
OpenGLのサンプルは問題なくビルド・実行できるかと思います。
問題は、DirectXのサンプルです。
NVIDIA SDK 9.52は、February 2006というバージョンを前提にしており、これ以外のバージョンのSDKでビルドすると実行に問題が発生する場合があります。
(実行時に「incorrect version of direct3d and/or d3dx」のようなエラーが出ます)
残念ながら、2013年11月時点で、Microsoft社から入手できるDirectXのバージョンはApril 2006からで、惜しい事に一つ違いでFebruary 2006はサイトから撤去されています。
(古くなったからって、べつに公開停止しなくたっていいじゃんねぇ?)
参考:各バージョンのダウンロードURL
http://dench.flatlib.jp/dxsdkver(HYPERでんち様)
http://www.headcrash.us/blog/2010/07/directx-sdk-version-numbers-and-download-list/(head crash industries様)
しょうがないので、持っていない人は知人からコピーしてもらうか、検索しまくって二次配布している怪しいサイトを見つけてください。
(私は見つけることに成功して、ダウンロードできましたが、二次配布幇助になってしまうので、URLは記しません。申し訳ない^^;)
で、February 2006でビルドします。
しかし、DXUTを使っているサンプルの場合、また「incorrect version of direct3d and/or d3dx」エラーが出ます。
原因は、DXUTの互換性です
サンプルで使っているDXUTを使わずに、February 2006にあるDXUTを使うようにしてビルドすると、上手く動作します。
February 2006ベースとあるのに、使っているDXUTのバージョンが違うってどういうこと?
という疑問はあるのですが、とりあえず動作するようになったのでよしとしましょう。