C#は電気羊の夢を見るか?(引っ越し中)

dtiブログが閉鎖とのことでhttp://tanocs.blog.fc2.com/へ引っ越します。

HLSL開発支援ツール

本家サイトである http://intelishade.net/ が閉鎖してしまっている為に InteliShade 3.1 を探しても探しても見つからない。


もうだめだ、きっと僕はHLSLを組む環境を手に入れる事ができないんだと不貞腐れていたら、nVidia様からHLSL及びCuda向けの開発環境が出ているじゃ有りませんか。
ただ、英語サイトで登録が必要との事でまだ試してない・・

http://developer.nvidia.com/object/nexus.html


他にも見つけたツールをメモ

Rekisa 三つ以上のテキストを一気に比較できる優れもの

常用はdf.exeなのだが、こいつは3つ以上は出来ないので、
例えばバージョンA+Bから作ったCのチェックとかするときに重宝しそう
http://download.goo.ne.jp/software/contents/soft/winnt/util/se308760.html


ViEmu Visual StudioをViっぽく使えると言う代物。
自分向け、と言うより職場の某人向け
ただ、$99のシェアウェアだったりする。
このエントリーをはてなブックマークに追加
LINEで送る

マイクロソフトには良く有る事

なんと言うか、もうね。
スプライトバッチと3Dモデル両方使おうとすると表示が崩れるとか、マジで勘弁して欲しい。

もうね、ステンシルシャドウとか、グラフィック周りの処理高速化しまくっちゃったじゃないさ・・


そして、そのおまじないの言葉はこれ。

GraphicsDevice.RenderState.DepthBufferEnable = true;
GraphicsDevice.RenderState.AlphaBlendEnable = false;
GraphicsDevice.RenderState.AlphaTestEnable = false;
GraphicsDevice.SamplerStates[0].AddressU = TextureAddressMode.Wrap;
GraphicsDevice.SamplerStates[0].AddressV = TextureAddressMode.Wrap;

例によって出元不明なソースだけど、ありがたく頂戴いたします。
このエントリーをはてなブックマークに追加
LINEで送る

意図しないメソッドのコール

昨日起こった、正月ボケのお話。


人は有る程度の事は意識しないで出来る。
これを無意識と言う。

それはあたかも一定の動作を機械的に行う、メソッドの様だと思う。
しかし、実際のメソッドと同じく、これは時にとんでもない悲劇を生む。

いつものようにプログラムを組みつつ、私は缶コーヒーを手に持った。
この缶が非常に非常に重たかったため、脳がこれは未開封の缶だと判断し、
その缶を思いっきり振ったのである。

その結果、部屋にはかぐわしいコーヒーの香りが充満したと言う。


これは缶の開封を確認しなくとも、このメソッドが動く為、
このような、とんでもない悲劇が生まれてしまったのだ。

恐らく、その缶を振るメソッドの先頭にはisCanOpenedの条件判定がしっかりと刻まれたはずだ。
このエントリーをはてなブックマークに追加
LINEで送る

リムーバルディスクの挿入検知

以前、実装しようとして失敗した物の解を見つけたのでメモ

// A device has been added to or removed from the system.
// Windows NT 4.0 and Windows Me/98/95: This value is not supported.
private const int DBT_DEVNODES_CHANGED = 0x0007;

private const int WM_DEVICECHANGE = 0x0219;

protected override void WndProc(ref System.Windows.Forms.Message m)
{
if (m.Msg != WM_DEVICECHANGE)
{
base.WndProc(ref m);
return;
}
switch ((int)(m.WParam))
{
case DBT_DEVICEARRIVAL:
MessageBox.Show("DBT_DEVICEARRIVAL");
break;
case DBT_DEVICEREMOVECOMPLETE:
MessageBox.Show("DBT_DEVICEREMOVECOMPLETE");
break;
case DBT_DEVNODES_CHANGED:
MessageBox.Show("DBT_DEVNODES_CHANGED");
break;
}
base.WndProc(ref m);
}

USBドライブが追加された場合には、WParam が
DBT_DEVNODES_CHANGED でメッセージが飛んでくる。


ちなみに、このコードはどっかのサイトのコピーだと思うんだけど、出展が見つからない・・
このエントリーをはてなブックマークに追加
LINEで送る

悪意有る多重継承

年末から取り組んでいるXNAでWinFormを使う方法だが、
XNA Todayに取り上げてもらったおかげで、非常に注目度が高い。

そういった経緯も有って、あれこれ試しているものの、いまいち成果が出ない。


そういった中で、ふと思いついた方法の一つに
「多重継承ならいけるんじゃないかなぁ」と言うのが有った


結論からすれば、C#は多重継承が禁止されている為、試すことも許されなかった。
こういう使い方をする輩を見越しての対応なんだろうなぁ・・・

なんだか見透かされた気分。


とりあえず分かったのは、
フォーカスが移っているのはメッセージをグローバルフックしてやれば取れるものの、
その瞬間からキーメッセージをまったくセンドしなくなる不思議。

全角半角キー以外の情報で何とかしのいでる方法が他に3種類ぐらい見つかったけれど、
そこまで無理をせずにWindowsで自動に処理して欲しいんだけどなぁ・・どうしたものか。
このエントリーをはてなブックマークに追加
LINEで送る

今日感動したこと

Ctrl+Spaceでクラスの候補が出力される!

いままでピリオドをわざわざ打ち直して表示してたんだけど、これは便利!
このエントリーをはてなブックマークに追加
LINEで送る

じぇねりっく

どうでもいいハマリ方をして、時間を浪費したのでメモ。

List<string> moji = new List<string>;
int a;
a = moji.count; //これができない

正しくは

a = moji.count();

あぁ、しょーもない。


「メソッド グループ 'Count' を非デリゲート型 'float' に変換することはできません。このメソッドを呼び出すことはできません。」
なぁんて普段と表示されるエラーが違うから、惑わされた惑わされた。
じっくり読めば、答えはちゃんと書いて有るんだけどね・・・


ちなみに、生まれて初めてdelegateなんて使ったもんだから、頭がどうにかしてたのかもしれない。

ちなみに、その使用方法

particles.ForEach(delegate(Particle particle) {
  if(particle.Update(dt)) {
    particles.Remove(particle);
  }
});

なんて言うかJavascriptっぽい使い方だなぁ等とぼんやり思った。
このエントリーをはてなブックマークに追加
LINEで送る

一旦結論

昨年から続くWindowsコントロールの件だけども、
結論から言えば「テキスト入力は簡単には出来ない」

フォームでキー入力を取得するまではWndProcでメッセージをフックしてやれば取れるのだが、
何故かテキストボックスをフォームに追加した途端にこれが出来なくなる。

泥沼化の様相を呈して来たのと、ゲームにユーザーからのテキスト入力って、ネトゲ以外での需要を感じなかったのでとりあえず保留。

一応、続きに駄目だった全ソースをぶちまけておく。
dtiブログの関係でソースが読みづらいけど、そこは勘弁してくりゃれ。
このエントリーをはてなブックマークに追加
LINEで送る

続きを読む »

FEZをXBOX360のコントローラでプレイする

HORIパッドをXBOX360Cで利用
2009/12/27に更新が入ってる奇跡のフリードライバ

やり方は結構簡単で、でも忘れると全然出来ないのでメモ

そのままだとカメラが自動的にぐるんぐるん回るわ、
設定変えようとしても全然反映されない輪で結構苦労するんだけど、
そいつはドライバのプロパティで直る。

基本的に詳細設定タブのZ軸、Z軸回転、スライダーが悪さをしてるので、
こいつらをすべて「中心を基準にする」のみチェックを入れれば他の設定もちゃんと動くようになる。
このエントリーをはてなブックマークに追加
LINEで送る

むむむ・・・

新年早々、昨日の続きをやっている訳ですが、上手くいかない。
キー入力があったら、ActiveControlに片っぱしからキー情報を送りつけてやろうと思ったら、取得できなかった。

まぁ、もともとが純粋なフォームではないから仕方ないが、意外と徹底した作りになってるなぁ・・

ちなみに失敗したのは下記の記述方法

Form.FromHandle(this.Window.Handle).ActiveControl


<追記>
と思ったら取得出来た。
明示的なキャストが必要とか、なんか微妙な感じの表記。

Form a = (Form)Form.FromHandle(this.Window.Handle);
MessageBox.Show(a.ActiveControl.Name);
このエントリーをはてなブックマークに追加
LINEで送る

 | HOME | 

PAGE TOP ▲

Appendix

■春条

■春条

生息地は愛知
車と甘い物が好きな31歳
特技は無限昼寝

MONOからSharpDXを使う
変態的な手法で、
.NET Frameworkを使わずに
ゲーム作りやってます。

Search

Calender

« | 2010-01 | »
S M T W T F S
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31 - - - - - -

Twitter

Recent Entries

DTIブログポータルへ
このブログを通報
Report Abuse

利用規約