突然ですが、同様の症状で根本原因が同じだが、細かい点が違うバグが出たので、このスレで報告させてもらいます。
自分もyohさんと同じ症状が出ました。
ただし、原因はyohさんと違い、シェーダ内で未初期化の変数をうっかり使用していたのが原因でした
このエラーはWindows向けコンパイルではエラーや警告として表示されませんが、XBoxではエラーと見なされるようです。
そして、そのエラーを表示するための内部処理内でメモリアクセス違反を起こしてエラーで落ちてました。(ここはyohさんと同じでした)
どうやら、XBox上では中で動作しているエフェクトファイルのコンパイラが違うようで
XBoxの方がコンパイラがシビア、かつ特定条件下で警告、エラー表示をしようとしてエラーを起こして落ちるようです。
そのために、XBoxでコンパイルすると謎のエラーを出して落ちるように見えるっぽいです。
このバグの回避方法ですが
自分は以下のようにに修正すると、正しくエラーメッセージを吐きました。
//-----------------------------------------------------------------------------
// 描画手法の宣言
//=============================================================================
//修正前
//int ShaderIndex = 0;
//VertexShader VSArray[1] =
//{
// compile vs_3_0 VSBasicNmTxVc(),
//};
//PixelShader PSArray[1] =
//{
// compile ps_3_0 PSBasicTx(),
//};
//Technique MMDBasicEffect
//{
// Pass
// {
// VertexShader = (VSArray[ShaderIndex]);
// PixelShader = (PSArray[ShaderIndex]);
// }
//}
//修正後
Technique MMDBasicEffect
{
Pass
{
VertexShader = (compile vs_3_0 VSBasicNmTxVc());
PixelShader = (compile ps_3_0 PSBasicTx());
}
}
なぜ、こうするとバグを回避できたのか原因は分かりませんが(配列に入れてるのがまずい?)
とりあえず、同種のバグで困っている人及びMSスタッフの参考までに。
それでは失礼します。
追伸
使用したのはVS2008Pro+XNA3.1です。