ようこそゲストさん

つーさのくーかん

メッセージ欄

分類 【プログラミング】 で検索

一覧で表示する

2010/06/18(Fri) RenderStateManager.cs

はてブ情報 はてブに登録 はてブ数 2010/06/18 6:25 プログラミング::SlimDX
void SetRenderState<T>(RenderState state, T value);
T GetRenderState<T>(RenderState state);

SlimDXのDirect3D9のRenderState周りに関してGetとSetメソッドしかない。
なんで RenderStateManagerとかないの? ググったらGone.とか書いてあるページが出てきたけど。
正直不便。なので、Managed DirectXライクに、その辺をラップするRenderStateManagerを作ったりなど。
この辺欲しい人他にもいるんじゃないかなぁと思って公開してみるテスト。

続きを読む

2010/05/31(Mon) 最適化実験+1

はてブ情報 はてブに登録 はてブ数 2010/05/31 0:04 プログラミング::C#

クラスライブラリ側がVector3(float, float, float)を要求するとき、
それをラップするクラスはどうするべきかと考えていた。

さらに、内部の型が違う場合について調べてみた。

続きを読む

2010/05/30(Sun) 最適化実験

はてブ情報 はてブに登録 はてブ数 2010/05/30 6:14 プログラミング::C#

暗黙的型変換の最適化に関する実験。

続きを読む

2010/05/03(Mon) mp3infp を C# で使うためのクラスライブラリ

はてブ情報 はてブに登録 はてブ数 2010/05/30 6:20 プログラミング::C#

TCO Q.Round1 が rescheduled だったのを知らなかったので、
mp3infp.dll を C#から使えるようにポーティングしていました。

C#からmp3ファイルのタグ情報を取得したいなぁと思ったのですが、
自前でフォーマット読んであーだこーだやるよりは、ライブラリで確実にと。
いつもタグエディタとして大変お世話になっているmp3infpに頼ることにしました。

    // タグ情報を読み込んで表示してみる。
Environment.CurrentDirectory = @"E:/Music";
TagInfo tag1 = MP3infp.LoadTag(@"[丹下桜] SAKURA/14. New Frontier.mp3");
Console.WriteLine(tag1.Title + " / " + tag1.Artist);

とか

    // ID3v2 タグを ID3v1タグにコピーしてみる
MP3infp mp3infp = new MP3infp(@"E:/Music/[水樹奈々] PHANTOM MINDS/02. Don't be long.mp3");
// ID3v1がなかったら作る
if (!mp3infp.ContainsMP3Tag(MP3infp.MP3TagType.ID3v1))
mp3infp.AddMP3Tag(MP3infp.MP3TagType.ID3v1);
TagInfo tag_v1 = mp3infp.LoadTag<TagInfo.MP3_ID3v1>();
TagInfo tag_v2 = mp3infp.LoadTag<TagInfo.MP3_ID3v2>();
// コピー元とコピー先で共通して有効な項目のみコピーして保存。
TagInfo.Copy(tag_v2, tag_v1);
tag_v1.Save();

とか、そーいうことをC#からできるようになります。
mp3infpのお陰で、mp3ファイルのID3v1,ID3v2の他、RMPやOGG, WAV, AVI, mp4 などにも対応できるのが嬉しいですね。
素晴らしいプログラムをありがとうございました。

次のソースコードをプロジェクトに追加するだけで使えるよーになります。

ダウンロード: mp3infp.cs
ライセンス: NYSL / http://www.kmonos.net/nysl/
動作に必要: Win32工作小屋 - mp3infp / http://win32lab.com/fsw/mp3infp/

mp3infp自体はLGPLですので、配布の際はご注意ください。

続きを読む

2010/02/27(Sat) 画面の解像度を変える

はてブ情報 はてブに登録 はてブ数 2010/02/27 14:01 プログラミング::HSP3

chgdisp は終了すると戻っちゃうので、というわけでサクっと作った。

僕のマシンには、PATHの通った場所にいくつか簡単なアプリを置いてます。

  • 1920.exe 画面解像度を 1920x1080 に変更して終了するだけのアプリ
  • 1280.exe 画面解像度を 1280x1024 に変更して終了するだけのアプリ
  • 1024.exe 画面解像度を 1024x768 に変更して終了するだけのアプリ
  • 800.exe 画面解像度を 800x600 に変更して終了するだけのアプリ
  • 640.exe 画面解像度を 640x480 に変更して終了するだけのアプリ

これを、Win+R のファイル名を指定して実行 から呼び出すわけです。
地味に便利です(特に遠隔地からVNCしてるとき)。
しかし、API呼ぶだけのアプリとかCのがラクすぎるだろ……と思った(今はCから移植した)。

続きを読む

1: つーさ 『なんでRMTの広告が、AdSenseよ……』 (2010/02/27 14:35)

2009/10/06(Tue) GSDKでゲームを作ろう[最終回]

はてブ情報 はてブに登録 はてブ数 2009/10/06 4:43 プログラミング::GSDK

ブロック崩しを作りました。

オブジェクト指向を理解していて、かつ、
ソース内に記述されているコメントを読んだら使い方はわかると思います。
おわり。

BlockKuzushi.zip

今回でめでたくこの連載は終了いたします!
今までご愛顧ありがとうございました!!

ついでにGSDKをバージョン1.1に更新しました。
今回のQoFRのためにいろいろと機能追加とバグフィクスがすさまじいです。
詳しくは、QoFRの開発日誌をご覧ください……
785 786 787 788 789 ←この辺の rev番号が若いやつはGSDKのリポジトリログです。
ろくなこと書いてないので役に立たなそうですね。

たぶん、次期バージョンはSlimDX使っての書き直しになるんじゃ? と思うので、
現在のGSDKはこれ以上アップデートしないかもしれません。

2009/02/26(Thr) 実験 - デリゲートの渡し方

はてブ情報 はてブに登録 はてブ数 2009/02/26 8:37 プログラミング::C#

匿名メソッドの速度とか、どう渡すのが一番速いのかなー。
ちょっと気になったので。(1)~(4)で一番速いのはどーれだ。

class Test
{
  class A { public int a; }
  class B : A { }
  void DeA(A obj) { obj.a++; }
  void DeB(B obj) { obj.a++; }
  void DoB(Action<B> act) { act(obj); }

  DoSomething()
  {
    DoB(DeA); // (1)
    DoB(DeB); // (2)
    DoB(delegate(B obj) { obj.a++; }); // (3)
    { // (4)
      Action<A> act = delegate(A obj) { obj.a++; });
      DoB(new Action<B>(act));
    }
  }
}

それぞれ1000万回の実行時間を計った。

続きを読む

2009/02/08(Sun) 指定した正規表現にマッチしなくなる操作をキャンセルするテキストボックス

はてブ情報 はてブに登録 はてブ数 2009/02/08 6:02 プログラミング::C#

指定フォーマットを入力させたいとき、MaskedTextBoxは便利なんだけど、int型を受け取りたいとか、double型を受け取りたいとかそういう目的にはイマイチ使い勝手が悪いような気がしたので作ってみた。

たとえば、ユーザにdouble型を入れて欲しい場面があった。

ユーザがちゃんと入れてくれることを信じるわけにはいかないので、double.TryParseでエラー処理を書くのはもちろんなのだけど、その前の段階で少しでもエラーをサプレスできないかなと思った。

そして好奇心からごりごりとWin32で作ってみた。

デザイナで配置してRegExPatternプロパティに

^-?\d*(\.\d*)?$

とか、書く。操作後マッチしなくなるような操作は受け付けない*1。Win32で作ったので、x64では動かないかもしれない。WindowsXPでは動いてるが、他のバージョンでは動かないかもしれない。そんなことをするくらいなら、素直にTryParseのエラー処理だけしておくべきなのだとも思うが。まぁ、好奇心だから。

最近、Win32のプラットフォーム呼び出しにあんまり抵抗がなくなってきた。やばいなぁ。

続きを読む