[過去ログ]
SlimDXについて語ろうぜ (197レス)
SlimDXについて語ろうぜ http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
65: 名前は開発中のものです。 [sage] 2010/12/19(日) 19:59:21 ID:oIwD3nP1 優越決まっても、別に最初から最後まで それしか知らないそればかり使えない事は無い ゲハ板の住人でもあるまいし C言語わかってもDirectX SDKのDXUT読める奴はそう居ない シェーダーとか使いこなせるようになるまでは C#でもDでもいいんじゃないか http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/65
66: 名前は開発中のものです。 [sage] 2010/12/19(日) 20:34:24 ID:+uUW/+wM むしろシェーダーとか使うようになるまでが言語の差が出てくると思うんだが 3Dの基礎はどの言語でも変わらない訳だし http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/66
67: 名前は開発中のものです。 [sage] 2010/12/19(日) 21:34:42 ID:oIwD3nP1 曖昧な書き方して、意味を取り違えられたかな? CやC++で初めるのは良いよ 後々PIXを使えないと死ぬので、どのみちCヘッダーぐらい 読め無いと生き残れない だけど、DXUTをガチで相手したら駄目 Cがこういう糞言語という訳でない http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/67
68: 名前は開発中のものです。 [sage] 2010/12/19(日) 22:36:29 ID:EYwGO04p DXUTはそれ自体が大規模化しちゃって、 DirectX(3D)の使い方を調べるのはやや不向きになっちゃってるのが残念だよね。 その点はSlimDXのサンプルのほうが簡潔で分かりやすい。 そいや、C#でプリミティブのVertexBuffer用のデータを作成するのって 皆はどうやってる? やっぱりstructを定義して1個ずつインスタンスを初期化していくんですかね。 この部分、ジェネリックがうまいこと動かずにすごく苦労する。 http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/68
69: 名前は開発中のものです。 [sage] 2010/12/19(日) 22:48:47 ID:2VEpyIA3 unsafeでポインタ使いまくり SlimDXなんか使ってる時点で安全性なんか関係ない http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/69
70: 名前は開発中のものです。 [sage] 2010/12/20(月) 22:37:09 ID:YK+Rc81C ポインタ使いまくりなら最初からC++でやればいい気がするが? http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/70
71: 名前は開発中のものです。 [sage] 2010/12/20(月) 23:00:57 ID:Ml895Bvs なんでそういう極論になるかな。 速度的にクリティカルなところとか、どうしても低レベルな処理をしたいところはあるだろ。 そういう箇所って言うのは一般にはほんの一部なんで、 そこのためだけに面倒なC++を使う必要がないのは大きなメリット。 http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/71
72: 名前は開発中のものです。 [sage] 2010/12/21(火) 00:32:03 ID:N/+0RCBN ところで結構作り進めて今更気がついた。 DirectX9でのロスト対策がどうしようもないんだけどどうすればいい? Device.Resetかけた時点でInvalidCallを吐き出して進まん・・・ http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/72
73: 名前は開発中のものです。 [sage] 2010/12/21(火) 01:17:54 ID:FsRX6CKW >>72 Direct3D9以前のデバイスロスト対策は、それはもう大変なんだよ。 今からやるならおすすめしないね。 仕事上、どうしてもやらないとというなら頑張れ。 >>69-71 ちょっと違うんだな。VertexBufferは速度面に問題があるのではなくて、 ジェネリックが使えない部分で困ってるんだよ。 C++のように何でもかんでもテンプレート化ということはできないから。 http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/73
74: 名前は開発中のものです。 [sage] 2010/12/21(火) 05:58:42 ID:UFi6vgUK わからん。専用のstruct定義して配列流しこむ以外に何かあるの? もしかしてC++でいうTMPとか駆使してFVFや頂点宣言を自動で解決したいとかいう話? http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/74
75: 名前は開発中のものです。 [sage] 2010/12/21(火) 08:52:18 ID:FsRX6CKW >>74 MemoryStreamにバイト単位で書き込んでいく方法もある。 どうもこのあたりの部分をジェネリックでうまく一般化出来ないんだよね。 C#相談室あたりで質問したけど無理、という結論になったことが。 http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/75
76: 名前は開発中のものです。 [] 2010/12/21(火) 10:07:33 ID:IUyb5141 なんだコイツ? 会話する気が無いのか? VertexBufferの作成やSetFVFが簡単にできる C++の構文で、C#にはできないのはな〜だ? ってwなぞなぞかよw 聞きかじった知識があるだけで、何も理解してない だろコレ http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/76
77: 名前は開発中のものです。 [sage] 2010/12/21(火) 11:45:06 ID:FsRX6CKW >>76 書かれてるレスをなぞなぞ呼ばわりしてるんだったら、 理解してないのはお前じゃないか。 SlimDXはC#でDirectXを扱えるようになる便利なライブラリだが、 VertexBufferのフォーマットを色々と弄りたい時に C#の文法上の制限から扱いにくい場合があるという話をしているだけ。 http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/77
78: 名前は開発中のものです。 [sage] 2010/12/21(火) 11:59:41 ID:IUyb5141 じゃあ、C++文法上だとどんな書き方ができる? http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/78
79: 名前は開発中のものです。 [sage] 2010/12/21(火) 13:40:09 ID:589aNUur 頂点扱うメソッドやクラスはなんでもかんでも<TVertex>と書きたいということ? インターフェイス使って interface IPosition3D { Vector3 Position3D { get; set; } } interface ITexCoord2D { Vector2 TexCoord2D { get; set; } } where TVertex : struct, IPosition3D, ITexCoord2D みたいな感じで可能 構造体の場合は実行時に特殊化されるのでインターフェイス経由のメンバアクセスでもボックス化は発生しないけど プロパティ経由だからインライン展開されたとしてもコピーは消えないのでどうしても遅くなるのは仕方ない MemoryStreamとか使っていい程度なんだったら別に問題にはならんでしょ http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/79
80: 名前は開発中のものです。 [] 2010/12/21(火) 14:33:36 ID:IUyb5141 ガキはほっといて、C#のメタプログラミングで VertexDeclarationの自動化を解決させちまおうぜ C++の静的じゃなくて、AttributeとReflectorを使った動的メタプログラミング 定義部 struct HOGEVertex { [VertexElement(type = DeclarationType.D3DDECLTYPE_FLOAT3 ,usage = Decl arationUsage.D3DDECLUSAGE_POSITION)] Vector3 Position; [VertexElement(type = DeclarationType.D3DDECLTYPE_FLOAT2 ,usage = Decl arationUsage.D3DDECLUSAGE_TEXCOORD)] Vector2 UV; ... 読み込み部 VertexElement[] ReadFVFAttribute<T>() where T : struct { var vertexElements = new List<VertexElement>(); foreach(var fi in typeof(T).GetFields()) { foreach(var attr in fi.GetType().GetCustomAttributes(false)) { if (attr.GetType() == typeof(VertexElementAttribute) ) vertexElements.add(new 略); ... result = vertexElements.ToArray(); } http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/80
81: 名前は開発中のものです。 [sage] 2010/12/21(火) 15:10:37 ID:FsRX6CKW >>80 なんじゃこりゃw すごい動的なコードだなぁ。 VertexBuilder的なクラスの階層でジェネリックにすればいいのかなと 思って色々試したんだけど、うまくいかなかったんだよね。 http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/81
82: 名前は開発中のものです。 [sage] 2010/12/21(火) 16:03:41 ID:589aNUur それだったら別にリフレクションなんか使わなくても VertexElement[]を返すプロパティを宣言したインターフェイスをHOGEVertexに実装させて whereで要求すればいいだけじゃないの? http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/82
83: 名前は開発中のものです。 [sage] 2010/12/21(火) 16:08:34 ID:IUyb5141 それC++でやってたソースみた事あんのか? なんだかな C++もC#も知らない その自分が未熟なことも知らない しまいには人を見下すだけで会話もできない http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/83
84: 名前は開発中のものです。 [sage] 2010/12/21(火) 16:10:35 ID:IUyb5141 >>82 うん 俺もこんなの使って無い http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/84
85: 82 [sage] 2010/12/21(火) 16:15:24 ID:589aNUur 直接関係ないけどGetCustomAttributesがフィールドの宣言順に返ってくる保証は無いよ。 順番が保証されてるフィールド情報の列挙方法はリフレクションAPIには無いので、 VertexElement属性には明示的にインデックスを付ける必要がある。 どうせリフレクション使うんだったら、staticプロパティとしてVertexElement[]を返すプロパティを定義してしまって そっちに属性を付けた方がいいかもしれない。 http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/85
86: 名前は開発中のものです。 [sage] 2010/12/21(火) 17:09:39 ID:IUyb5141 >>85 >宣言順に返ってくる保証は無いよ 本番では使って無くてよかったw 後の継承設計を考えると、staticなVertexDeclarationを 渡す、IVertexDeclarationProvider{ GetDeclaration(); }じゃないかな。 たぶん、みんなこういうことしてるのではないかなぁ DrawableObj<T> where T: struct , IVertexDeclarationProvider { Draw() //毎フレーム { gd.VertexFormat(T.GetDeclaration()); vb.SetData(T_array); } } class HogeEffectedObj : DrawableObj<HogeVertexA> リフレクション使うとしたら、ゲーム開始やLoading中に、 プロジェクト中のstaticな要素をパラメータ付けて初期化するとか(破棄&GCするとか) 。 ゲームのメインループ外に処理にできないと設計の意味が無い。 http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/86
87: 名前は開発中のものです。 [sage] 2010/12/21(火) 18:38:36 ID:Xai41NPW インターフェイスのstaticメンバはサポートされてないので staticフィールドを返すインスタンスメンバとして実装してdefault(T).GetDeclaration()かな http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/87
88: 名前は開発中のものです。 [sage] 2010/12/21(火) 20:51:48 ID:N/+0RCBN >>73 亀レスすまぬ 普通にロスト起こした時にSpriteやらのリセットをしてなかっただけだった。無事に対策できたっぽい 失礼しました http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/88
89: 名前は開発中のものです。 [sage] 2010/12/21(火) 23:09:44 ID:IUyb5141 >>87 ゴメンtypo × T.GetDeclaration() //コンパイルできません ○ T_array[0].GetDeclaration() //こんなもんかな それから型パラメータは TVertex とかにしないとスゲー読みづらい http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/89
90: 名前は開発中のものです。 [sage] 2010/12/21(火) 23:25:18 ID:Xai41NPW いやdefault(T).GetDeclaration()のほうがいい 構造体なのでdefault(T)でインスタンスが作れる http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/90
91: 名前は開発中のものです。 [sage] 2010/12/21(火) 23:36:17 ID:Xai41NPW それと、リフレクション使うならこういうふうにシングルトンでキャッシュするのがいいよ class VertexInfo<TVertex> { public static readonly VertexInfo<TVertex> Instance = new VertexInfo<TVertex>(); public VertexElement[] Format { get; set; } private VertexInfo() { /*ここでリフレクション使ってFormatを初期化*/ } } http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/91
92: 名前は開発中のものです。 [sage] 2011/01/23(日) 21:16:58 ID:v5GChX7G 俺MDXから入った身なんだけど、Spriteでの拡大とか回転に悩んでるんだが。 SlimDXでのDirectX9オンリーで作りたいんだけど、MDXで作ってた時みたいにSprite.Draw2DでやろうとしてもDX10/11にしか無いんだよね。 要するにSlimDXでSpriteの拡大とか回転ってどうやんの? 本家DirectXの知識は殆ど無い。 http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/92
93: 名前は開発中のものです。 [sage] 2011/01/23(日) 21:28:14 ID:IvAtt79g Transformに変換行列入れる ネイティブのD3DXのラッパーっていうのはなんか気持ち悪いからSpriteは自作してるなあ http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/93
94: 名前は開発中のものです。 [sage] 2011/01/23(日) 22:19:47 ID:v5GChX7G >>93 いまいちキチンと分かって無いんだけど、Matrix.Transformation2Dってものがあったんで試してみた。 が、表示されん。きちんと描画してるはずなのに何故だ・・・ http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/94
95: 名前は開発中のものです。 [sage] 2011/01/24(月) 00:11:56 ID:ZV2/0eH0 >>94 SlimDXのサンプルは単純でよく出来てるから、 それを真似するところから始めるといいよ。 http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/95
96: 名前は開発中のものです。 [sage] 2011/01/24(月) 17:28:23 ID:SbpYcvOy サンプルを見てみたが、SpriteとTexture使った拡大とか無かったわ・・・ うーむ、俺の考え違いだったのかも知れない。やはり一から勉強しなおす必要がありそうだ。 http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/96
97: 名前は開発中のものです。 [sage] 2011/01/24(月) 17:33:40 ID:ZV2/0eH0 >>96 俺の場合、2Dの板ポリをGPU描画することが大半なので専用の計算をしている。 座標系が2D系と同じにすることを意図して、 Z軸のマイナス側からカメラを向ける。 そして板ポリの座標系がそれに合うようにワールド座標を設定しておく方式。 http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/97
98: 名前は開発中のものです。 [sage] 2011/01/24(月) 17:45:20 ID:SbpYcvOy >>97 なるほど、ちょっとじっくり勉強しつつ試してみます。ありです。 ただMDX見たいなDraw2Dのように簡単に拡大とか出来たりする奴はSlimDXのDX9には無いってことでいいのかな。 ずっとMDXに頼ってきて最近SlimDXに移ってきたから・・・ 無知ですみません http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/98
99: 名前は開発中のものです。 [sage] 2011/01/24(月) 18:02:45 ID:ZV2/0eH0 >>98 それならなおさらD3DXSpriteを使えばいいじゃん。 http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/99
100: 名前は開発中のものです。 [sage] 2011/01/26(水) 21:53:12 ID:q2pNSJtE 度々すまない。 俺が思ってる簡単に拡大とかって言うのは、 Sprite.Draw(位置,Rectangle,サイズ,ロケーション) 見たいなもので、それが無いのかなと甘い考えをしてた。 D3DXSpriteと言われても良く分からなかった。 もうこれで分からなかったら迷惑になりそうなので引きます・・・ http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/100
101: 名前は開発中のものです。 [sage] 2011/01/26(水) 22:59:48 ID:Dys02ewd >>100 D3DXFontには変換座標かけつつ描画するモードがあるから、 たぶんSpriteにもあるはずなんだけど。 ただし、D3DXFontの場合は描画が遅くなったのであしからず。 (なぜかというと、変換かけない場合はVertexエンジンを使用せずに描画するから) http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/101
102: 名前は開発中のものです。 [sage] 2011/01/26(水) 23:00:52 ID:q2pNSJtE >>101 なるほど。試してみます。 お騒がせしました http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/102
103: 名前は開発中のものです。 [sage] 2011/02/21(月) 01:33:37.79 ID:FjA/EdKJ SlimDX初心者です。 画像を表示するためにDirect3D9でテクスチャ表示をしようと思っているのですがどうしたら良いのか教えていただけないでしょうか? DirectInputを利用したキーボード入力、Direct3D9を利用した背景色の設定は出来ました。 http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/103
104: 名前は開発中のものです。 [sage] 2011/02/21(月) 04:26:22.73 ID:e+9Xrrk1 >>103 サンプルプロジェクトのソースコードを読め。 http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/104
105: 名前は開発中のものです。 [sage] 2011/02/21(月) 20:14:03.45 ID:da8+AaWU >>103 とりあえずこのへん http://www21.atwiki.jp/csharpgamedev/pages/18.html http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/105
106: 名前は開発中のものです。 [age] 2011/03/12(土) 19:58:15.04 ID:gPTtXzoi age http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/106
107: 名前は開発中のものです。 [sage] 2011/03/24(木) 15:10:27.06 ID:o/XjgpCP 3DモデルのツールみたいなものをSlimDXで作ろうとしてるのですが、別ウィンドウでダイアログを 出してボタン等のコントロールを表示することってできるのですか? http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/107
108: 名前は開発中のものです。 [sage] 2011/03/24(木) 15:12:42.59 ID:+jtjlJX2 もちろんできる 普通にWinFormsやWPFで作って表示すればいいだけ というより、フォーム上に貼り付けたコントロールの上にSlimDXの描画を行う http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/108
109: 107 [sage] 2011/03/24(木) 16:52:06.20 ID:o/XjgpCP Winformに配置する部分ってフォームデザイナも使えるんですか? http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/109
110: 名前は開発中のものです。 [sage] 2011/03/24(木) 17:00:46.83 ID:+jtjlJX2 使える SlimDXで描画したい部分にはパネルでも貼り付けといて そのウィンドウハンドルをDeviceのコンストラクタに渡せ http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/110
111: 107 [sage] 2011/03/24(木) 17:14:42.98 ID:o/XjgpCP なるほど、そのやり方でやってみます。 ありがとうございました。 http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/111
112: 107 [sage] 2011/03/24(木) 17:48:46.54 ID:o/XjgpCP フォーム表示までできたのですが、 // var form = new RenderForm("SlimDX Sample"); ←はコメントアウトして var device = new Device(new Direct3D(), 0, DeviceType.Hardware, パネル.Handle, CreateFlags.HardwareVertexProcessing, new PresentParameters() というやり方で合っていますでしょうか? http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/112
113: 名前は開発中のものです。 [sage] 2011/03/25(金) 10:54:48.65 ID:L6sPV2wn SlimDXのサンプルが掲載されているWebサイトって無いですか? 海外サイトでも構いません。 http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/113
114: 名前は開発中のものです。 [sage] 2011/03/25(金) 21:09:55.09 ID:vv767kg8 >>112 ウィンドウハンドルを入れるところは合ってるけど、色んなものが抜けてる。 とりあえずDirect3Dオブジェクトを外に出して、更にPresentParametersに 適切な値を設定するところから。 >>113 ttp://www21.atwiki.jp/csharpgamedev/pages/18.html あとSlimDX SDKのサンプル。 http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/114
115: 名前は開発中のものです。 [sage] 2011/03/25(金) 21:18:59.16 ID:8nQu2/1X XNACCのサンプルとDirectXSDKのサンプル(C++)が一番役立つ http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/115
116: 名前は開発中のものです。 [sage] 2011/03/29(火) 23:06:19.15 ID:7uGGHTvI 2点引っかかっている箇所があります。 どなたかヒントなどお持ちの方いらっしゃいましたら教えてください…。 ? 新しいテクスチャを作る際のTexture2DDescriptionのパラメータで Usage=Default OptionFlags=None CpuAccessFlags=None この3つのどれか一つでもDefault/None/Noneから別のに変えるとnew Texture2Dのところ(*)でInvalid Callエラーが出ます ネット上では同様の症例にたどり着けなかったのですが可能性のある原因など思い当たる方はいらっしゃいますか? (Default/None/Noneの状態だと普通に作れます) ////////////////////////////////////////// Texture2DDescription testTexDesc = new Texture2DDescription(); //他のパラメータ省略 testTexDesc.Usage = ResourceUsage.Default; testTexDesc.OptionFlags = ResourceOptionFlags.None; testTexDesc.CpuAccessFlags = CpuAccessFlags.None; Texture2D testtex = new Texture2D(dx11Device, testTexDesc); //* ////////////////////////////////////////// http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/116
117: 名前は開発中のものです。 [sage] 2011/03/29(火) 23:06:29.29 ID:7uGGHTvI ? テクスチャ(Texture2D)からピクセルを読み出したかったのでGetPixel的なメソッドを作っているのですが Direct3D11以降、テクスチャのロックをするメソッドはdx11デバイスのImmediateContext.MapSubresource(〜);で正しいでしょうか? (もしくはtex.AsSurface(〜).Map(〜)…?) Direct3D10までのTexture2DインスタンスにはMap()メソッドがあるようなのですがDirect3D11のTexture2Dには見当たらず、調べてみたら前述のメソッドがそれっぽいような感じを受けました。 テクスチャのCpuAccessFlagを変更できないのでそのメソッドでいいのか確認できないのですが、もし定石のやり方があれば知っておきたいと思っています。 /////////環境 Windows7 64bit Visual C# 2010 Express Edition SlimDXのバージョンは昨日までJune 2010でした 今日March 2011にアップデートして参照設定置き換えましたが症状はまったく変化しませんでした 参照DLLはx86Verとx64Ver両方で試しましたがどちらも同じでした。 ろくに英語読めないながら海外のサイトなどをちょっと見たところでは Win7 64bitというのがどうも相性が悪そうな感じを受けるのですが… http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/117
118: 名前は開発中のものです。 [sage] 2011/04/05(火) 18:00:52.28 ID:+LS+lOHR 海外でもいいので情報交換をしてるフォーラムってないんですか? http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/118
119: 名前は開発中のものです。 [sage] 2011/04/06(水) 02:47:44.18 ID:PtBPsaxE gamedev.netはslimDX関連のスレッドをよく見かけるなぁ http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/119
120: 名前は開発中のものです。 [sage] 2011/04/09(土) 10:55:44.62 ID:sKYCeLl0 SlimDXでDirectX関連で確保したメモリは、最後に手動で開放しないと残ってしまうんですか? http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/120
121: 名前は開発中のものです。 [sage] 2011/04/09(土) 12:36:51.53 ID:QWLtEJqL うん たしかナントカManagerみたいなのがあって そのstaticメンバとして全てのDirectX関連のリソースへの強参照を保持してて わざわざGCを動かなくしてる糞設計だったはず http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/121
122: 名前は開発中のものです。 [sage] 2011/04/09(土) 13:35:47.32 ID:oX/gW5Mu オレは自前でリソース専用のガベコレを用意して、 明示的に解放させてるな(システムとしては参照カウンタ方式) SlimDX付属のフレームワークもそうなってるだろ? http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/122
123: 名前は開発中のものです。 [sage] 2011/04/12(火) 16:16:23.71 ID:Y/I5qVEj SlimDXにあるUnprojectってスクリーン空間からオブジェクト空間にベクトルを射影させる関数ですか? MDXにあるUnprojectとは引数が違っている様に思うのですが、使い方が分かりません。 http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/123
124: 名前は開発中のものです。 [sage] 2011/04/12(火) 16:22:02.28 ID:155qZFtN >>123 実装を見て考えたら? Vector3 Vector3::Unproject( Vector3 vector, float x, float y, float width, float height, float minZ, float maxZ, Matrix worldViewProjection ) { Vector3 v; Matrix matrix; Matrix::Invert( worldViewProjection, matrix ); v.X = ( ( ( vector.X - x ) / width ) * 2.0f ) - 1.0f; v.Y = -( ( ( ( vector.Y - y ) / height ) * 2.0f ) - 1.0f ); v.Z = ( vector.Z - minZ ) / ( maxZ - minZ ); Vector3::TransformCoordinate( v, matrix, v ); return v; } http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/124
125: 名前は開発中のものです。 [sage] 2011/04/12(火) 23:28:55.22 ID:4dFtS2x0 >>123 俺はこんな感じで使ってる(マウスカーソルを射影) float z = 0.1f; //0〜1f?射影時の視点からのポイント距離 Vector3.Unproject(new Vector3((float)mouseX, (float)mouseY, z), viewport.X, viewport.Y, viewport.Width, viewport.Height, viewport.MinZ, viewport.MaxZ, mat); 最初と最後の引数以外は全部Viewportから取ってるから Viewport持ってるなら簡単 最後のmatrixは普通にワールド*ビュー*プロジェクションのマトリクス渡す http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/125
126: 名前は開発中のものです。 [sage] 2011/04/22(金) 02:56:05.21 ID:UveiKLLT >>120 今時、搭載メモリ8G12GB16GBはあたりまえだから、あんまり気にしなくていいんじゃないかな。 http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/126
127: 名前は開発中のものです。 [sage] 2011/04/23(土) 17:14:08.38 ID:H3hA0vRV Xファイルの中にある法線ベクトルのインデックス番号ってどうやったら取れるのですか? 頂点バッファと頂点インデックスまでは取れてます。 http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/127
128: 名前は開発中のものです。 [sage] 2011/04/23(土) 18:42:03.05 ID:0CpVWLj4 >>127 普通は頂点に位置とかUVとかと一緒に法線ベクトルそのものが入ってるよ。 http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/128
129: 127 [sage] 2011/04/23(土) 19:33:02.95 ID:H3hA0vRV >>128 ありがとうございます、法線ベクトルも取れました。 でも、せっかく取れた法線ベクトルですが、Xファイルから独自形式の(FVFで定義した)もので描画しようと思ったのですが、 法線ベクトルを頂点データに入れてもライティング効果がありませんでした。 struct VertexTex { public const VertexFormat Format = VertexFormat.Position | VertexFormat.Diffuse | VertexFormat.Normal; public Vector3 Position; public int Color; public Vector3 Normal; } VertexTex[] vert = new VertexTex[N]; vert[n].Position = 取得した位置 vert[n].Color = 取得した色 vert[n].Normal = 取得した法線ベクトル こんな感じで取得した情報をそのまま頂点バッファに入れています。 Xファイルから法線情報を引き継ぐにはどうしたらいいのですか? http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/129
130: 名前は開発中のものです。 [sage] 2011/04/23(土) 19:55:21.49 ID:0CpVWLj4 >>129 Mesh.FromFileで読み込んだMeshに、独自のVertexFormatを 後から定義したいということ? とりあえず下の例ではXファイルから生成したMeshにNormal追加してるので参考に。 chsarpgamedev - Xファイルの描画 http://www21.atwiki.jp/csharpgamedev/pages/32.html デバッガで法線ベクトルが正しそうな値が入っているのを確認して、かつ 固定パイプラインを使っての描画なら、ライトが正しく設定されているかを 確認したほうがいいかも。 シェーダ使ってるならシェーダ自体が間違ってる可能性も。 ちょっとこれだけでは様々な原因が推測されるので、Mesh.CreateTeapot使って どうなるかとか、問題の切り分けが必要だと思われる。 http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/130
131: 127 [sage] 2011/04/25(月) 10:49:59.48 ID:xz94dpYm 上記のソースの一部を削除したらライティング処理ができました。 削除した所 //VertexFormat.Diffuse //vert[n].Color = 取得した色 //public int Color 原因は、頂点データに色を付加してたからみたいです。 色は、別途マテリアルを適用させないといけなかったんですね。 http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/131
132: 名前は開発中のものです。 [sage] 2011/04/26(火) 08:04:30.89 ID:cWfiSBLo Direct3D10/Direct3D11の詳細デバッグのやり方 ネイティブのDirectXとSlimDXの相関についてよく分かってなかったので検索しても把握できてなかった・・・ レベル低い話だけど、今後同じところで引っかかる人がいたときのために書いときます つっこみ所あったら是非つっこんでください ?DebugViewダウンロード(VisualStudio Expressの場合。上位版は要らないらしい) ?DirectX SDKと一緒にインストールされるUtilitiesのDirectX ControlPanel起動 ?DirectX 10.x/11タブのEdit Listにデバッグしたいプロジェクトのbin\Debug\フォルダあたりにある「.vshost.exe」拡張子のファイルを追加 ?Debug LayerをForce On ?DebugView起動 ?C# Expressで普通にビルド→DebugView確認 …でもWpfとSlimDX連携させたプロジェクトはこれでもちゃんとデバッグが出力されなかった… なのでSlimDXのSampleを改造してデバッグ時に引っかかる問題の箇所だけ再現してデバッグしてます http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/132
133: 名前は開発中のものです。 [sage] 2011/05/16(月) 10:40:24.35 ID:XD0rb09K プログラムを終了した時に出力ウィンドウに出てくる下記のメッセージは何を表しているのですか? Object of type SlimDX.Direct3D9.Mesh was not disposed. Stack trace of object creation: ・・・ Total of 11 objects still alive. http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/133
134: 名前は開発中のものです。 [sage] 2011/05/16(月) 10:52:18.79 ID:vb2M0wfD リソースリークしてるぞってこと Dispose忘れ http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/134
135: 133 [sage] 2011/05/16(月) 11:28:05.55 ID:XD0rb09K なるほど、Disposeやっていませんでした。 ありがとうございます。 http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/135
136: 名前は開発中のものです。 [sage] 2011/05/16(月) 15:04:59.03 ID:SgNiWRkk あ、最近のSlimDXはそんなこと教えてくれるのね。 対応するDirectX再頒布パッケージが強制的に新しくなっちゃうから、 長らく更新してないわ……。 http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/136
137: 名前は開発中のものです。 [sage] 2011/05/16(月) 22:48:14.86 ID:pYSUjBPJ Dx11でコンピュートシェーダにMatrixを渡すにはどうすればいいんでしょうか? ImmediateContext.ComputeShaderにはSetMatrix()のようなメソッドがなく、 コンピュートシェーダの.hlslファイルからfx_5_0プロファイルで無理やりEffectを作ってそこに渡してもシェーダー側には渡っていないようです。 http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/137
138: 137 [sage] 2011/05/16(月) 23:23:29.97 ID:pYSUjBPJ すいません、普通にサンプルの中に参考がありました…。 http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/138
139: 名前は開発中のものです。 [sage] 2011/05/20(金) 13:29:58.03 ID:GMn5NHik slimDXで使えるFBXやColladaのローダはないでしょうか? http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/139
140: 名前は開発中のものです。 [sage] 2011/07/11(月) 12:42:43.89 ID:piNnRBf/ 描画エリアのリサイズをしようと思って、 PresentParameters pp = new PresentParameters() { BackBufferWidth = FormWidth, // フォームの幅と高さ BackBufferHeight = FormHeight, }; device.Reset(pp); で実行したら、 D3DERR_INVALIDCALL: Invalid call (-2005530516) というエラーが出ました。 ウィンドウモードでリサイズをするにはどうしたらいいのですか? http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/140
141: 名前は開発中のものです。 [sage] 2011/07/11(月) 14:51:54.45 ID:ZpoF+bdP >>140 リソースの開放忘れ。 http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/141
142: 140 [sage] 2011/07/11(月) 16:06:54.64 ID:piNnRBf/ >>141 一旦開放して再確保したらできました。 http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/142
143: 名前は開発中のものです。 [age] 2011/08/07(日) 18:11:18.22 ID:XCPITJXM あげ http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/143
144: 名前は開発中のものです。 [sage] 2011/08/15(月) 13:06:42.87 ID:dzreDaU2 そういえば、SlimDXでDirectX11による開発ってできるんですかね? むしろVista以降をターゲットにした開発および開発環境整えた猛者はいますか? http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/144
145: 名前は開発中のものです。 [sage] 2011/08/16(火) 16:45:27.23 ID:7U3gvwlZ Vista以降をターゲットにするなら、SlimDXよりもMS謹製のライブラリのほうがいいと思うよ。 サポートされる範囲も多いし。 http://mevius.5ch.net/test/read.cgi/gamedev/1264902081/145
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 52 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.013s