進んでるような迷ってるような(ふて7)

代替assert

assert()の発生でスタックが見えなくなる問題が良く分からないので、

void MyAssert()
{
    ::DebugBreak();
}
#define MY_ASSERT(v) if ( !(v) ) { MyAssert(); assert(v); }

ってやったらしっかり止まった上にスタックも見えました。ブラボー!!
…なにか間違っている気がする…

Express Editionの罠

あと、MessageBoxを使おうとしたら

MSVCRTD.lib(crtexe.obj) : error LNK2019: 未解決の外部シンボル _main が関数 ___tmainCRTStartup で参照されました。

というエラーが発生して、なんかリンクできねえぞと思ったらありました。
http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=345783&SiteID=7
曰く、
http://www.microsoft.com/japan/msdn/vstudio/express/visualc/usingpsdk/
ここの手順4が抜けていたようです(corewin_express.vsprops ファイルを修正し…のところ)。
しかし結局Platform SDKと一緒に使えるのなら最初からパッケージでダウンロードできるようにしてくれたら良かったのになあとも思うわけです。

あと、Win32アプリケーションウィザードも最初は使えなくなっていますが、同じリンク先のドキュメント曰く「…ディレクトリにある…ファイルの441行目から444行目の先頭に//を追加してコメントアウトしてください」とあり、そうすることでWindowsアプリケーションが作れるようになりました。
結局手作業の修正で使えるようになるんだったら最初から使えるようにしとけっちゅーねん!!

GLUIへの布石

後はGLUIを試してみたかったのでとりあえずglutを組み込むことにしました。
まずはglutのセットアップだ。

  • C:\Program Files\Microsoft Platform SDK\Include\gl にglut.hをコピー
  • C:\Program Files\Microsoft Platform SDK\Lib にglut32.libをコピー
  • 作成するプログラムの走るディレクトリに glut32.dllをコピー

と、ここまでやって、SDLでやってた表示初期化を全部カットしてglutの初期化に置き換えたらとりあえず表示はされたっぽいです。
後は必要なコールバックを必要なだけ登録していけばOKかな。
SDLは使わなくなるわけではなく、インプット処理に特化させて使う予定です。