2011/12/26(月)Direct 3D の Device の Reset に失敗する。

はてブ数 2011/12/26 19:49 プログラミング::SlimDXつーさ

ウィンドウモードで起動したアプリはAlt+Enterで何度でも切り替えられるのに、フルスクリーンで起動したアプリをウィンドウモードにしてからフルスクリーンにしようとすると、IDirect3DDevice9::ResetでD3DERR_DEVICELOST が出て復帰できない。

>> スクリーンモードを変更します。
Direct3D9: (ERROR) :Exclusive Mode has been taken by other app or other device on the same adapter. SetCooperativeLevel returns D3DERR_DEVICELOST.
Direct3D9: (ERROR) :SetCooperativeLevel returned failure. CreateDevice/Reset Failed
Direct3D9: (ERROR) :Reset failed and Reset/TestCooperativeLevel/Release are the only legal APIs to be called subsequently
Direct3D9: :Window has been subclassed; cannot restore!
Direct3D9: (ERROR) :Exclusive Mode has been taken by other app or other device on the same adapter. SetCooperativeLevel returns D3DERR_DEVICELOST.

がんばってググった結果は、Direct Inputがウィンドウをサブクラス化してしまうせいだとわかった。
Direct3Dより、DirectInputを先に初期化するだけで、この不具合は直った。

覚えておくといいなのっ

2011/12/17(土)すけーる・よーぴっちろーる・とらんすれーと

はてブ数 2011/12/17 03:32 プログラミング::SlimDXつーさ

コピペして使うがよい。

using System;

class MatrixLib {
/// <summary>
/// 3Dの[拡縮→回転→平行移動]変換行列を作る。
/// </summary>
/// <param name="xScale">X軸方向倍率</param>
/// <param name="yScale">Y軸方向倍率</param>
/// <param name="zScale">Z軸方向倍率</param>
/// <param name="yawRotate">ヨー角度(360.0で一周)</param>
/// <param name="pitchRotate">ピッチ角度(360.0で一周)</param>
/// <param name="rollRotate">ロール角度(360.0で一周)</param>
/// <param name="xTranslate">X軸方向移動量</param>
/// <param name="yTranslate">Y軸方向移動量</param>
/// <param name="zTranslate">Z軸方向移動量</param>
/// <returns></returns>
public static D3DMatrix Transform3D(double xScale, double yScale, double zScale, double yawRotate, double pitchRotate, double rollRotate, double xTranslate, double yTranslate, double zTranslate)
{
  D3DMatrix m = D3DMatrix.Identity;
  double cosYaw = Cos(yawRotate), sinYaw = Sin(yawRotate);
  double cosPitch = Cos(pitchRotate), sinPitch = Sin(pitchRotate);
  double cosRoll = Cos(rollRotate), sinRoll = Sin(rollRotate);

  m.M11 = (float)(xScale * (cosRoll * cosYaw + sinRoll * sinPitch * sinYaw));
  m.M12 = (float)(xScale * sinRoll * cosPitch);
  m.M13 = (float)(xScale * (sinRoll * sinPitch * cosYaw - cosRoll * sinYaw));
  m.M21 = (float)(yScale * (yScale * cosRoll * sinPitch * sinYaw - sinRoll * cosYaw));
  m.M22 = (float)(yScale * cosRoll * cosPitch);
  m.M23 = (float)(yScale * (sinRoll * sinYaw + cosRoll * sinPitch * cosYaw));
  m.M31 = (float)(zScale * cosPitch * sinYaw);
  m.M32 = (float)(zScale * -sinPitch);
  m.M33 = (float)(zScale * cosPitch * cosYaw);
  m.M41 = (float)xTranslate;
  m.M42 = (float)yTranslate;
  m.M43 = (float)zTranslate;
  m.M44 = 1f;

  return m;
}

/// <summary>
/// 2Dの[拡縮→回転→平行移動]変換行列を作る。
/// </summary>
/// <param name="scaleX">X軸方向倍率</param>
/// <param name="scaleY">Y軸方向倍率</param>
/// <param name="angle">回転角度(360.0で一周)</param>
/// <param name="transX">X軸方向平行移動</param>
/// <param name="transY">Y軸方向平行移動</param>
/// <returns>作られた行列</returns>
public static D3DMatrix Transform2D(double scaleX, double scaleY, double angle, double transX, double transY)
{
  D3DMatrix m = D3DMatrix.Identity;
  double cos = Cos(a), sin = Sin(a);
  m.M11 = (float)(cos * scaleX);
  m.M12 = (float)(sin * scaleX);
  m.M21 = (float)(-sin * scaleY);
  m.M22 = (float)(cos * scaleY);
  m.M33 = 1.0f;
  m.M41 = (float)transX;
  m.M42 = (float)transY;
  m.M44 = 1.0f;
  return m;
}

static double Sin(double a) { return Math.Sin(a / 180d * Math.PI); }
static double Cos(double a) { return Math.Cos(a / 180d * Math.PI); }
static double Tan(double a) { return Math.Tan(a / 180d * Math.PI); }
static double Asin(double d) { return Math.Asin(d) / Math.PI * 180d; }
static double Acos(double d) { return Math.Acos(d) / Math.PI * 180d; }
static double Atan(double d) { return Math.Atan(d) / Math.PI * 180d; }
static double Atan2(double y, double x) { return Math.Atan2(y, x) / Math.PI * 180d; }
}

2011/12/11(日)寝てた

はてブ数 2011/12/12 23:45 のんびり日記::のんびり日記つーさ

仕事観カテの記事書いてるときと打って変わって休日の日記たるや……。

土曜日25時頃家に帰ってきて、すぐ寝て起きたら11時頃で、それでも眠くて眠くて、次に目が覚めたら17時でした。

髪を切りに行こうと出かけました。外はそんなに寒くなかったけど、理容室のお兄さんには、お客さん寒そうですねと言われました。うーん、寒くはないんだけどな。
暖かいところにでもいたんですかい? パチンコやってた?
そういう定番のフリにも笑って答えられるようになれればいいのになぁと思うのですが。
とりあえず髪の毛切ってさっぱりしました。さっぱり。

帰ってきてまた眠くて寝てたんですが、次に起きたのは24時頃で。
さすがに眠れなくて、まぁ0時起きならこのまま起きてて会社行ってもいいかなと思ったんですが、朝方になるとまた眠くなってきて4時半頃寝ました。

月曜日の朝は、寝ぼけていたのか脳内時刻表が間違っていて電車をミスった上に、財布を忘れて大変でした。

気づいたら12月の上旬が終わっていました。

2011/12/10(土)日本橋とルミナリエともつ鍋と

はてブ数 2011/12/12 23:32 のんびり日記::お出かけつーさ

よい土曜日でした。

  • 同行者2名
  • ぽんばし
    • 金のとりから(+チョコレートソース)
    • お好み焼き どむす本店 ねぎ焼き
    • タネも仕掛けもある手品 ジョニー
    • ねおんちゃんかわゆす 観光案内所のビジュアルがシュールだった。
    • フレンズ ネットでしかお世話になったことがなかったが。
    • ネジ屋 ネジ屋!
    • ちゃいるどおぶえでん 購入したのは僕じゃないけど。
    • 足が疲れた 雨も降ってた。
  • ルミナリエ
    • 人大杉
    • 思ってたほどではない
    • 思ってたほどではないのに人大杉
  • もつ鍋
    • ここで2名の増援
    • みんなが鍋をつつくのをよそに、一人ちゃいるどおぶえでん
    • みんながマリカ7に夢中になっているのをよそに、一人ちゃいるどおぶえでん
    • ちゃいるどおぶえでんおもしろかった
    • 人生で初めて、乗る予定の終電を逃したのでタクシー帰宅

よい土曜日でした。

2011/12/09(金)望年会

はてブ数 2011/12/11 13:07 のんびり日記::仕事観つーさ

お料理おいしかったです。ちーと食べ過ぎましたが。

振り返れば、2011年はあっという間に過ぎた感もあり、いろいろ詰まっていた感もあり。まぁ、今から1年前は、まだ広島にいたんですもの。研究仕上げて、卒業して引っ越して、社会に出て……。付き合う人間はほぼ全部変わったし、自分の中にもいろいろと変化も多かったような気もしますし、やはり何も変わっていないような気もします。

僕はいつでもマイペース。来年もマイペースでがんばりたいですね。

さて、こっから下はまた、仕事の話です。すみません。

続きを読む

2011/12/07(水)ビッグマック 200円 (2)

はてブ数 2011/12/07 22:45 のんびり日記::仕事観つーさ

マックでご飯食べるの昨日ぶり!
今日はちゃんと単品で注文しましたよ!

3時間残業して帰るだけでもう商店街の景色が違いますね。どこもかしこもシャッターが閉まっている。なるほどなぁという感じですね。

今日遅くなってしまったのは、明日のミーティングのための打ち合わせのミーティングだったのだけど、

続きを読む