2013年3月24日日曜日

Visual Studio 2012でXP用のプログラム

デフォルトだと、VS2012で作成した実行ファイルはXPで動かないのかよ…
こんなことに1時間もハマッてしまった…

ここに詳しくかいてあった。
http://blogs.msdn.com/b/vcblog/archive/2012/10/08/10357555.aspx

しかもサポートされたのはSP1からかよ…

 まあ、これで一安心と思ったが、ここでもう一ハマリしてしまった。
「プロジェクトのプロパティ」でビルドツール を"v110_xp"にして作成しても、XPで起動すると未だに「有効なWin32アプリケーションではありません」と出てしまう。

上のリンクのコメント欄での議論を読むとわかるのだが
原因は、プロジェクトのプロパティ- リンカー - システム - サブシステムの項目が空欄になっていたことだった。

新規プロジェクトを作成するとき私は「空のコンソール」を選ぶのだが、これだとサブシステムの項が空欄になる。
7ではこのままでも動くのだが、XPではしっかり指定しないとダメなようだ。


もうハマり疲れた

2013年3月18日月曜日

Fossil SCM

個人的なプロジェクトではソース管理ソフトにFossilを使っている。

使用感はこちらの方のブログ Scenery and Fish - fossil-scm によくまとめられていて、自分も同意見。

自分の環境だとWindowsのコマンドプロンプトからコミットメッセージを日本語で入力しても、文字化けせずに上手くいっているみたいだ。
ただやはり不安なので、エディタでUTF-8nで入れている。

しかし、UTF-8nで入れても、コマンドプロンプトでログを表示させると、文字が、ひらがな漢字にかかわらず、"・"になってしまったりすることがある。
ブラウザから見ればちゃんと表示されるので気にはしていないが。

そのせいか、GitにエクスポートするときにWindowsだと上手くいかなかった。
Linuxに移してからエクスポートしてみたら上手くいった。
コピペするだけで簡単にリポジトリをコピーできる仕組みで良かった。


ソースコードの文字コードは…
  • Shift-JISだと、日本語のコメントが文字化けする。
  • UTF-16(UCS-2 LE)だと、バイナリとして扱われてしまい、Fossilからソースが見えない。他のリビジョンとの差分が表示されない。
  • UTF-8nなら大丈夫。





追記:

Fossil1.25だとUTF-8nでコミットメッセージを入力すると、文字化けするようだ。
Fossil1.25のChange logを見てみると以下の文を見つけた。
Correctly deal with BOMs in check-in comments.
チェックインコメントでBOMを正しく扱えるようになった、ということだが、これのせいでBOM無しUTF-8がおかしくなったのだろうか…

ソースの文字コードは今まで通りで大丈夫なようなので、そのうち修正されることを願って、今はコミットコメントはBOM有りUTF-8で書こう





 さらに追記:

VC++はソースコードの文字コードとしてBOM無しのUTF-8nには対応していない。(http://msdn.microsoft.com/ja-jp/library/xwy0e8f2.aspx
なので、VC++使いはFossilでたまにBOMがゴミとして表示されるのは我慢してBOM有りUTF-8で保存するべし。

2013年3月15日金曜日

GLSLでreturnすると極端に遅くなる

GLSLのフラグメントシェーダで(バーテックスシェーダは試してない)main関数の途中でreturn文を入れると、極端に遅くなる。
200fpsだったのが100fpsくらいまで落ちる。
if文で分岐して、実際にその文が実行されなくても遅い。

なぜだ
キャッシュミスが起きてるのかな