Windwos + VisualC++(VC6) + SDL + OpenGL メモ

STATUS: 故障中x2


 ちょっと仕事で3Dにプロットしたいものがあったので、趣味と実益を兼ねてSDL+OpenGLでプログラムを書いてみた。
 久しぶりにSDL触ったので、いろいろ忘れてる〜。以下環境つくるまでのメモ。


【前提環境】
Microsoft Windows 2000
Microsoft Visual C++ 6.0 (VC6)


SDLをインストール


SDLのサイトからダウンロードしてきて適当なフォルダに展開。
 いまのバージョンは1.2.9
 フォルダは「D:\SDK\SDL-1.2.9」とした。
・VCの設定でライブラリのディレクトリを指定
 メニューの「ツール」→「オプション」でダイアログ開いて、「ディレクトリ」タブの…
 インクルードファイルに「D:\SDK\SDL-1.2.9\include」、ライブラリファイルに「D:\SDK\SDL-1.2.9\lib」を追加。
※最近はどっちかというと、プロジェクトの設定のほうの「追加ライブラリのパス」とかに書くのが好み


● プロジェクトを作る


 VCの新規プロジェクトでプロジェクトを作る。
 「Win32 Application」か「Win32 Console Application」どっちでもいい。(違いは後述)
 「空のプロジェクト」を選ぶ


 プロジェクトの設定の「C/C++」タブの「コード生成」の「仕様するランタイムライブラリ」は「マルチスレッド(DLL)」にする。(デバッグかリリース) 


 「D:\SDK\SDL-1.2.9\lib\SDL.dll」をプロジェクトのフォルダにコピーしておく。


● 「Win32 Application」その後


 適当にソースを書くMain関数から書いてOK(WinMainはいらない→SDLmain.libのなかにある)
 ライブラリは、SDL.lib と SDLmain.lib をリンク。


こんか感じでソースにかいてもいい。
#pragma comment(lib, "SDL.lib")
#pragma comment(lib, "SDLmain.lib")


 ヘッダはこんな感じでインクルード
#include <SDL.h>


※注意
 Main関数は、以下の形式にしないとダメ(「sdlmain.lib(SDL_win32_main.obj) : error LNK2001: 外部シンボル "_SDL_main" は未解決です」エラーになる)→参考


int main(int argc, char* argv[])


※その他
 余計なコンソールウィンドウひらかないのはいいけど、Printfが使えない(?)のでデバッグがメンドイ。Debugウィンドウに標準出力出す方法ってあったかな?


● 「Win32 Console Application」その後


 適当にソースを書く。
 main関数は好きなように書いてヨシ。
 ライブラリは、SDL.lib をリンク。(SDLmain.lib は不要)


 ヘッダはこんな感じでインクルード
#include <SDL.h>


※注意
 プリコンパイル済みヘッダが〜と怒られたら、プロジェクトの設定で「プリコンパイル済みヘッダ使わない」にして黙らせる。
(stdsfx.hインクルードするようにすればでないんだけど)


OpenGLを使う準備


 ライブラリとかはVC入れた時点で入っている。


#pragma comment(lib, "opengl32.lib")
#pragma comment(lib, "glu32.lib")
#include <GL/gl.h>
#include <GL/glu.h>


とかすれば動く。


お好みによって以下を追加。


#pragma comment(lib, "glaux.lib")
#pragma comment(lib, "glut32.lib")
#include <GL/glaux.h>
#include <GL/glut.h>


※注意
 先に #include <windows.h> とかしておかないと、gl.hがコンパイル通らない。


● 参考URL


SDL日本語マニュアル (tomotacoさんとこの)


Example 2-8. SDL と OpenGLはサンプルの先頭に以下を追加でそのまま動く。


#pragma comment(lib, "opengl32.lib")
#pragma comment(lib, "glu32.lib")
#include <windows.h>
#include <GL/gl.h>
#include <GL/glu.h>


● 昔作ったプログラム (Windows用 / SDL使ってない)


testGL2