[過去ログ] SlimDXについて語ろうぜ (197レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
43(1): 2010/10/24(日)16:49 ID:0z3YDA8C(2/2) AAS
2次元エフェクトならWindows Presentation Foundation Pixel Shader Effects Libraryがお勧め
一通りまとまっててWPF使わなくても参考になる
44: 2010/10/24(日)17:13 ID:41k51lwY(3/3) AAS
>>43 thx!
まさにそれ落として読んでましたw
サンプル動画も見たんですが、どう考えても宝の山ですww
ただHLSLの基本がまだまだなので理解力がヤバイですorz
ティーカップの人の本を買って熟読するしかないですね。
P.S.
SlimDXの2DゲームエンジンってGorgonってのしかなさそうですね。
省5
45: 2010/11/13(土)09:04 ID:snFVsDxl(1) AAS
TextLayoyt:SetDrawingEffect()に渡すIClientDrawingEffectの実装の仕方がさっぱりわからん
C#での実装の仕方を教えてほしい
46: 2010/11/13(土)12:26 ID:qup/FXee(1) AAS
DirectWrite使ったことないけど見てみたらComPointerに吹いた
COMのIDWriteTextRendererをC#のCOM相互運用で実装して返せばいいのかな
できなくはないんだろうけど俺には無理というかやりたくない
47: 2010/11/14(日)13:07 ID:VAytE0MM(1) AAS
TextLayoutでクラスを実体化させたあとGetDrawingEffect()で取り出せる。(嘘)
48(1): 2010/12/15(水)17:22 ID:W0ff0zj1(1) AAS
visualstudio2010でslimdxsamplesのSimpleModel10をデバッグすると
DXGI_ERROR_UNSUPPORTEDって出て途中で止まるんだけど理由わかりますか?
49(1): 2010/12/15(水)17:31 ID:D5FJhaCt(1) AAS
>>48
ハードウェアがサポートしてないから。
ただ、サポートしてないと言っても色々あって、
プログラムが必要としてない機能をデバイスに要求してて失敗してるだけなら、
それを外すことで他の部分は動かせるようになる。
50: 2010/12/15(水)21:24 ID:q2iTm1kx(1) AAS
>>49
やっぱりハードの問題だったか。
ありがとうございます
51: 2010/12/18(土)01:42 ID:4XOJBpRQ(1/4) AAS
SlimDX使ってる人少ないなぁ。
やっぱりC#でDirectX使うのは少数派なんだろうな。
MicrosoftはなぜDirectXサポートを止めたのだろうか。
無理矢理XNAに引きずり込みたかったのだろうけど。
52: 2010/12/18(土)09:57 ID:JWorHuxc(1/2) AAS
DirectX生で使うような人の多くは速度やらGCやらでC#は避けるんだろうなぁ
あとドキュメントもほぼ全てC/C++向けに書かれてるし。
まぁ何だかんだ言ってC#の手軽さとXNAはよくあってると思う。
MSが作ってるだけあってよく作り込まれたフレームワークだし。
53: 2010/12/18(土)11:43 ID:NqdLgtTb(1) AAS
悪い意味で他にライバルが居ないんだよな
C++は別格としても、それ以外ではC#のほかに現実的な選択肢が無い
54: 2010/12/18(土)20:11 ID:4XOJBpRQ(2/4) AAS
やっぱりC++が現実的だよね。
DX10以降になればWindows API Code Packが使えるのかな。
55: 2010/12/18(土)21:50 ID:K2tyzowz(1) AAS
俺はアプリやゲーム自体はC++で作りたいんだけど
エディタとかは簡単にC#で作りたいんだよね
そこで困るんだよなぁ
DirectXを使用しないC#なんて描画が遅くて話にならないし
使うにしても現状XNAしか選択肢が無いけれどXBOXの仕様にひっぱられて
DirectX9までの中途半端な物しか使えない
やっぱりC#から普通にDirectXを呼び出せるManagedDirectXの存在は
省2
56: 2010/12/18(土)21:53 ID:JWorHuxc(2/2) AAS
エディタなら配布のこともあまり考えなくて良いからSlimDXは良い選択だと思う
57: 2010/12/18(土)22:23 ID:4XOJBpRQ(3/4) AAS
けどC#+SlimDXだと、DirectX+Net Framework+SlimDXが必要だからね。
SlimDxは添付できるし、DirectXもNet FrameworkもXP以降は最初から入って
いるけど、今の最新にする場合はやっぱりインスコ必要だし。
そこが一番面倒なとこ。
SlimDxはDirectXの薄いラッパーだから、変に集約してなくて使いやすいので
選択肢としてはいいとは思う。
58: 2010/12/18(土)22:56 ID:5bWq6Od2(1) AAS
まあD言語とかの選択肢がないではないけどな。
WPFとの組み合わせが確立できるといいんだけどなぁ。
59: 2010/12/18(土)23:58 ID:4XOJBpRQ(4/4) AAS
WPFはゲームには使えないだろ。
ブラウザゲー程度かと。
D言語は昨日サイト見てたけど、言語仕様がガラパゴスな感じ
だったね
60(1): 2010/12/19(日)09:49 ID:+uUW/+wM(1/3) AAS
D言語って言語仕様だけ見ればかなり良い言語だと思うんだけど。
基本はC系だしガラパゴスな感じってのがよく分からん。
ただ、これでゲーム作るとなるとC#なんて目じゃ無いぐらいドキュメントが少ないっていう。
61(1): 2010/12/19(日)14:39 ID:tZJ4XwZS(1) AAS
Dは互換性のない言語仕様変更をしょっちゅうやってるから実用言語としては話にならない
C#も言語仕様は拡張しまくってるけど、MSだから上位互換は絶対に保たれる
62: 2010/12/19(日)14:55 ID:tl1Xfhrg(1/2) AAS
>>61
D言語ってそんなに互換性のない仕様変更多いのか。
自作ゲームで採用するのを見送ってよかったぜ。
>>60
基本C系だけど、色んな言語のいろいろな機能を取り込んでいるから
機能多すぎと言った方がいいかもしれない。
まあ、基本だけ覚えて後は使わなければいいのだけど、それだとD言語
省2
63: 2010/12/19(日)16:50 ID:+uUW/+wM(2/3) AAS
なんかD言語スレ見たくなってしまったなw
64: 2010/12/19(日)17:15 ID:tl1Xfhrg(2/2) AAS
あー、変な話降ってすまない。
元のSlimDXの話をどうぞ。
65: 2010/12/19(日)19:59 ID:oIwD3nP1(1/2) AAS
優越決まっても、別に最初から最後まで
それしか知らないそればかり使えない事は無い
ゲハ板の住人でもあるまいし
C言語わかってもDirectX SDKのDXUT読める奴はそう居ない
シェーダーとか使いこなせるようになるまでは
C#でもDでもいいんじゃないか
66: 2010/12/19(日)20:34 ID:+uUW/+wM(3/3) AAS
むしろシェーダーとか使うようになるまでが言語の差が出てくると思うんだが
3Dの基礎はどの言語でも変わらない訳だし
67: 2010/12/19(日)21:34 ID:oIwD3nP1(2/2) AAS
曖昧な書き方して、意味を取り違えられたかな?
CやC++で初めるのは良いよ
後々PIXを使えないと死ぬので、どのみちCヘッダーぐらい
読め無いと生き残れない
だけど、DXUTをガチで相手したら駄目
Cがこういう糞言語という訳でない
68: 2010/12/19(日)22:36 ID:EYwGO04p(1) AAS
DXUTはそれ自体が大規模化しちゃって、
DirectX(3D)の使い方を調べるのはやや不向きになっちゃってるのが残念だよね。
その点はSlimDXのサンプルのほうが簡潔で分かりやすい。
そいや、C#でプリミティブのVertexBuffer用のデータを作成するのって
皆はどうやってる?
やっぱりstructを定義して1個ずつインスタンスを初期化していくんですかね。
この部分、ジェネリックがうまいこと動かずにすごく苦労する。
69(1): 2010/12/19(日)22:48 ID:2VEpyIA3(1) AAS
unsafeでポインタ使いまくり
SlimDXなんか使ってる時点で安全性なんか関係ない
70(1): 2010/12/20(月)22:37 ID:YK+Rc81C(1) AAS
ポインタ使いまくりなら最初からC++でやればいい気がするが?
71(1): 2010/12/20(月)23:00 ID:Ml895Bvs(1) AAS
なんでそういう極論になるかな。
速度的にクリティカルなところとか、どうしても低レベルな処理をしたいところはあるだろ。
そういう箇所って言うのは一般にはほんの一部なんで、
そこのためだけに面倒なC++を使う必要がないのは大きなメリット。
72(1): 2010/12/21(火)00:32 ID:N/+0RCBN(1/2) AAS
ところで結構作り進めて今更気がついた。
DirectX9でのロスト対策がどうしようもないんだけどどうすればいい?
Device.Resetかけた時点でInvalidCallを吐き出して進まん・・・
73(1): 2010/12/21(火)01:17 ID:FsRX6CKW(1/4) AAS
>>72
Direct3D9以前のデバイスロスト対策は、それはもう大変なんだよ。
今からやるならおすすめしないね。
仕事上、どうしてもやらないとというなら頑張れ。
>>69-71
ちょっと違うんだな。VertexBufferは速度面に問題があるのではなくて、
ジェネリックが使えない部分で困ってるんだよ。
省1
74(1): 2010/12/21(火)05:58 ID:UFi6vgUK(1) AAS
わからん。専用のstruct定義して配列流しこむ以外に何かあるの?
もしかしてC++でいうTMPとか駆使してFVFや頂点宣言を自動で解決したいとかいう話?
75: 2010/12/21(火)08:52 ID:FsRX6CKW(2/4) AAS
>>74
MemoryStreamにバイト単位で書き込んでいく方法もある。
どうもこのあたりの部分をジェネリックでうまく一般化出来ないんだよね。
C#相談室あたりで質問したけど無理、という結論になったことが。
76(1): 2010/12/21(火)10:07 ID:IUyb5141(1/7) AAS
なんだコイツ?
会話する気が無いのか?
VertexBufferの作成やSetFVFが簡単にできる
C++の構文で、C#にはできないのはな〜だ?
ってwなぞなぞかよw
聞きかじった知識があるだけで、何も理解してない
だろコレ
77: 2010/12/21(火)11:45 ID:FsRX6CKW(3/4) AAS
>>76
書かれてるレスをなぞなぞ呼ばわりしてるんだったら、
理解してないのはお前じゃないか。
SlimDXはC#でDirectXを扱えるようになる便利なライブラリだが、
VertexBufferのフォーマットを色々と弄りたい時に
C#の文法上の制限から扱いにくい場合があるという話をしているだけ。
78: 2010/12/21(火)11:59 ID:IUyb5141(2/7) AAS
じゃあ、C++文法上だとどんな書き方ができる?
79: 2010/12/21(火)13:40 ID:589aNUur(1/3) AAS
頂点扱うメソッドやクラスはなんでもかんでも<TVertex>と書きたいということ?
インターフェイス使って
interface IPosition3D { Vector3 Position3D { get; set; } }
interface ITexCoord2D { Vector2 TexCoord2D { get; set; } }
where TVertex : struct, IPosition3D, ITexCoord2D みたいな感じで可能
構造体の場合は実行時に特殊化されるのでインターフェイス経由のメンバアクセスでもボックス化は発生しないけど
プロパティ経由だからインライン展開されたとしてもコピーは消えないのでどうしても遅くなるのは仕方ない
省1
80(1): 2010/12/21(火)14:33 ID:IUyb5141(3/7) AAS
AA省
81: 2010/12/21(火)15:10 ID:FsRX6CKW(4/4) AAS
>>80
なんじゃこりゃw すごい動的なコードだなぁ。
VertexBuilder的なクラスの階層でジェネリックにすればいいのかなと
思って色々試したんだけど、うまくいかなかったんだよね。
82(2): 2010/12/21(火)16:03 ID:589aNUur(2/3) AAS
それだったら別にリフレクションなんか使わなくても
VertexElement[]を返すプロパティを宣言したインターフェイスをHOGEVertexに実装させて
whereで要求すればいいだけじゃないの?
83: 2010/12/21(火)16:08 ID:IUyb5141(4/7) AAS
それC++でやってたソースみた事あんのか?
なんだかな
C++もC#も知らない
その自分が未熟なことも知らない
しまいには人を見下すだけで会話もできない
84: 2010/12/21(火)16:10 ID:IUyb5141(5/7) AAS
>>82
うん 俺もこんなの使って無い
85(1): 82 2010/12/21(火)16:15 ID:589aNUur(3/3) AAS
直接関係ないけどGetCustomAttributesがフィールドの宣言順に返ってくる保証は無いよ。
順番が保証されてるフィールド情報の列挙方法はリフレクションAPIには無いので、
VertexElement属性には明示的にインデックスを付ける必要がある。
どうせリフレクション使うんだったら、staticプロパティとしてVertexElement[]を返すプロパティを定義してしまって
そっちに属性を付けた方がいいかもしれない。
86: 2010/12/21(火)17:09 ID:IUyb5141(6/7) AAS
>>85
>宣言順に返ってくる保証は無いよ
本番では使って無くてよかったw
後の継承設計を考えると、staticなVertexDeclarationを
渡す、IVertexDeclarationProvider{ GetDeclaration(); }じゃないかな。
たぶん、みんなこういうことしてるのではないかなぁ
DrawableObj<T> where T: struct , IVertexDeclarationProvider
省12
87(1): 2010/12/21(火)18:38 ID:Xai41NPW(1/3) AAS
インターフェイスのstaticメンバはサポートされてないので
staticフィールドを返すインスタンスメンバとして実装してdefault(T).GetDeclaration()かな
88: 2010/12/21(火)20:51 ID:N/+0RCBN(2/2) AAS
>>73
亀レスすまぬ
普通にロスト起こした時にSpriteやらのリセットをしてなかっただけだった。無事に対策できたっぽい
失礼しました
89: 2010/12/21(火)23:09 ID:IUyb5141(7/7) AAS
>>87
ゴメンtypo
× T.GetDeclaration() //コンパイルできません
○ T_array[0].GetDeclaration() //こんなもんかな
それから型パラメータは TVertex とかにしないとスゲー読みづらい
90: 2010/12/21(火)23:25 ID:Xai41NPW(2/3) AAS
いやdefault(T).GetDeclaration()のほうがいい
構造体なのでdefault(T)でインスタンスが作れる
91: 2010/12/21(火)23:36 ID:Xai41NPW(3/3) AAS
それと、リフレクション使うならこういうふうにシングルトンでキャッシュするのがいいよ
class VertexInfo<TVertex> {
public static readonly VertexInfo<TVertex> Instance = new VertexInfo<TVertex>();
public VertexElement[] Format { get; set; }
private VertexInfo() { /*ここでリフレクション使ってFormatを初期化*/ }
}
92: 2011/01/23(日)21:16 ID:v5GChX7G(1/2) AAS
俺MDXから入った身なんだけど、Spriteでの拡大とか回転に悩んでるんだが。
SlimDXでのDirectX9オンリーで作りたいんだけど、MDXで作ってた時みたいにSprite.Draw2DでやろうとしてもDX10/11にしか無いんだよね。
要するにSlimDXでSpriteの拡大とか回転ってどうやんの?
本家DirectXの知識は殆ど無い。
93(1): 2011/01/23(日)21:28 ID:IvAtt79g(1) AAS
Transformに変換行列入れる
ネイティブのD3DXのラッパーっていうのはなんか気持ち悪いからSpriteは自作してるなあ
94(1): 2011/01/23(日)22:19 ID:v5GChX7G(2/2) AAS
>>93
いまいちキチンと分かって無いんだけど、Matrix.Transformation2Dってものがあったんで試してみた。
が、表示されん。きちんと描画してるはずなのに何故だ・・・
95: 2011/01/24(月)00:11 ID:ZV2/0eH0(1/3) AAS
>>94
SlimDXのサンプルは単純でよく出来てるから、
それを真似するところから始めるといいよ。
96(1): 2011/01/24(月)17:28 ID:SbpYcvOy(1/2) AAS
サンプルを見てみたが、SpriteとTexture使った拡大とか無かったわ・・・
うーむ、俺の考え違いだったのかも知れない。やはり一から勉強しなおす必要がありそうだ。
97(1): 2011/01/24(月)17:33 ID:ZV2/0eH0(2/3) AAS
>>96
俺の場合、2Dの板ポリをGPU描画することが大半なので専用の計算をしている。
座標系が2D系と同じにすることを意図して、
Z軸のマイナス側からカメラを向ける。
そして板ポリの座標系がそれに合うようにワールド座標を設定しておく方式。
98(1): 2011/01/24(月)17:45 ID:SbpYcvOy(2/2) AAS
>>97
なるほど、ちょっとじっくり勉強しつつ試してみます。ありです。
ただMDX見たいなDraw2Dのように簡単に拡大とか出来たりする奴はSlimDXのDX9には無いってことでいいのかな。
ずっとMDXに頼ってきて最近SlimDXに移ってきたから・・・ 無知ですみません
99: 2011/01/24(月)18:02 ID:ZV2/0eH0(3/3) AAS
>>98
それならなおさらD3DXSpriteを使えばいいじゃん。
100(1): 2011/01/26(水)21:53 ID:q2pNSJtE(1/2) AAS
度々すまない。
俺が思ってる簡単に拡大とかって言うのは、
Sprite.Draw(位置,Rectangle,サイズ,ロケーション)
見たいなもので、それが無いのかなと甘い考えをしてた。
D3DXSpriteと言われても良く分からなかった。
もうこれで分からなかったら迷惑になりそうなので引きます・・・
101(1): 2011/01/26(水)22:59 ID:Dys02ewd(1) AAS
>>100
D3DXFontには変換座標かけつつ描画するモードがあるから、
たぶんSpriteにもあるはずなんだけど。
ただし、D3DXFontの場合は描画が遅くなったのであしからず。
(なぜかというと、変換かけない場合はVertexエンジンを使用せずに描画するから)
102: 2011/01/26(水)23:00 ID:q2pNSJtE(2/2) AAS
>>101
なるほど。試してみます。
お騒がせしました
103(2): 2011/02/21(月)01:33 ID:FjA/EdKJ(1) AAS
SlimDX初心者です。
画像を表示するためにDirect3D9でテクスチャ表示をしようと思っているのですがどうしたら良いのか教えていただけないでしょうか?
DirectInputを利用したキーボード入力、Direct3D9を利用した背景色の設定は出来ました。
104: 2011/02/21(月)04:26 ID:e+9Xrrk1(1) AAS
>>103
サンプルプロジェクトのソースコードを読め。
105: 2011/02/21(月)20:14 ID:da8+AaWU(1) AAS
>>103
とりあえずこのへん
外部リンク[html]:www21.atwiki.jp
106: [age] 2011/03/12(土)19:58 ID:gPTtXzoi(1) AAS
age
107(3): 2011/03/24(木)15:10 ID:o/XjgpCP(1/4) AAS
3DモデルのツールみたいなものをSlimDXで作ろうとしてるのですが、別ウィンドウでダイアログを
出してボタン等のコントロールを表示することってできるのですか?
108: 2011/03/24(木)15:12 ID:+jtjlJX2(1/2) AAS
もちろんできる
普通にWinFormsやWPFで作って表示すればいいだけ
というより、フォーム上に貼り付けたコントロールの上にSlimDXの描画を行う
109: 107 2011/03/24(木)16:52 ID:o/XjgpCP(2/4) AAS
Winformに配置する部分ってフォームデザイナも使えるんですか?
110: 2011/03/24(木)17:00 ID:+jtjlJX2(2/2) AAS
使える
SlimDXで描画したい部分にはパネルでも貼り付けといて
そのウィンドウハンドルをDeviceのコンストラクタに渡せ
111: 107 2011/03/24(木)17:14 ID:o/XjgpCP(3/4) AAS
なるほど、そのやり方でやってみます。
ありがとうございました。
112(1): 107 2011/03/24(木)17:48 ID:o/XjgpCP(4/4) AAS
フォーム表示までできたのですが、
// var form = new RenderForm("SlimDX Sample"); ←はコメントアウトして
var device = new Device(new Direct3D(), 0, DeviceType.Hardware, パネル.Handle, CreateFlags.HardwareVertexProcessing, new PresentParameters()
というやり方で合っていますでしょうか?
113(1): 2011/03/25(金)10:54 ID:L6sPV2wn(1) AAS
SlimDXのサンプルが掲載されているWebサイトって無いですか?
海外サイトでも構いません。
114: 2011/03/25(金)21:09 ID:vv767kg8(1) AAS
>>112
ウィンドウハンドルを入れるところは合ってるけど、色んなものが抜けてる。
とりあえずDirect3Dオブジェクトを外に出して、更にPresentParametersに
適切な値を設定するところから。
>>113
外部リンク[html]:www21.atwiki.jp
あとSlimDX SDKのサンプル。
115: 2011/03/25(金)21:18 ID:8nQu2/1X(1) AAS
XNACCのサンプルとDirectXSDKのサンプル(C++)が一番役立つ
116: 2011/03/29(火)23:06 ID:7uGGHTvI(1/2) AAS
2点引っかかっている箇所があります。
どなたかヒントなどお持ちの方いらっしゃいましたら教えてください…。
?
新しいテクスチャを作る際のTexture2DDescriptionのパラメータで
Usage=Default
OptionFlags=None
CpuAccessFlags=None
省11
117: 2011/03/29(火)23:06 ID:7uGGHTvI(2/2) AAS
?
テクスチャ(Texture2D)からピクセルを読み出したかったのでGetPixel的なメソッドを作っているのですが
Direct3D11以降、テクスチャのロックをするメソッドはdx11デバイスのImmediateContext.MapSubresource(〜);で正しいでしょうか?
(もしくはtex.AsSurface(〜).Map(〜)…?)
Direct3D10までのTexture2DインスタンスにはMap()メソッドがあるようなのですがDirect3D11のTexture2Dには見当たらず、調べてみたら前述のメソッドがそれっぽいような感じを受けました。
テクスチャのCpuAccessFlagを変更できないのでそのメソッドでいいのか確認できないのですが、もし定石のやり方があれば知っておきたいと思っています。
/////////環境
省7
118: 2011/04/05(火)18:00 ID:+LS+lOHR(1) AAS
海外でもいいので情報交換をしてるフォーラムってないんですか?
119: 2011/04/06(水)02:47 ID:PtBPsaxE(1) AAS
gamedev.netはslimDX関連のスレッドをよく見かけるなぁ
120(1): 2011/04/09(土)10:55 ID:sKYCeLl0(1) AAS
SlimDXでDirectX関連で確保したメモリは、最後に手動で開放しないと残ってしまうんですか?
121: 2011/04/09(土)12:36 ID:QWLtEJqL(1) AAS
うん
たしかナントカManagerみたいなのがあって
そのstaticメンバとして全てのDirectX関連のリソースへの強参照を保持してて
わざわざGCを動かなくしてる糞設計だったはず
122: 2011/04/09(土)13:35 ID:oX/gW5Mu(1) AAS
オレは自前でリソース専用のガベコレを用意して、
明示的に解放させてるな(システムとしては参照カウンタ方式)
SlimDX付属のフレームワークもそうなってるだろ?
123(2): 2011/04/12(火)16:16 ID:Y/I5qVEj(1) AAS
SlimDXにあるUnprojectってスクリーン空間からオブジェクト空間にベクトルを射影させる関数ですか?
MDXにあるUnprojectとは引数が違っている様に思うのですが、使い方が分かりません。
上下前次1-新書関写板覧索設栞歴
あと 74 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.724s*