[過去ログ] SlimDXについて語ろうぜ (197レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
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とは引数が違っている様に思うのですが、使い方が分かりません。
124: 2011/04/12(火)16:22 ID:155qZFtN(1) AAS
>>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 );
省6
125: 2011/04/12(火)23:28 ID:4dFtS2x0(1) AAS
>>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は普通にワールド*ビュー*プロジェクションのマトリクス渡す
126: 2011/04/22(金)02:56 ID:UveiKLLT(1) AAS
>>120
今時、搭載メモリ8G12GB16GBはあたりまえだから、あんまり気にしなくていいんじゃないかな。
127(3): 2011/04/23(土)17:14 ID:H3hA0vRV(1/2) AAS
Xファイルの中にある法線ベクトルのインデックス番号ってどうやったら取れるのですか?
頂点バッファと頂点インデックスまでは取れてます。
128(1): 2011/04/23(土)18:42 ID:0CpVWLj4(1/2) AAS
>>127
普通は頂点に位置とかUVとかと一緒に法線ベクトルそのものが入ってるよ。
129(1): 127 2011/04/23(土)19:33 ID:H3hA0vRV(2/2) AAS
>>128
ありがとうございます、法線ベクトルも取れました。
でも、せっかく取れた法線ベクトルですが、Xファイルから独自形式の(FVFで定義した)もので描画しようと思ったのですが、
法線ベクトルを頂点データに入れてもライティング効果がありませんでした。
struct VertexTex
{
public const VertexFormat Format = VertexFormat.Position | VertexFormat.Diffuse | VertexFormat.Normal;
省8
130: 2011/04/23(土)19:55 ID:0CpVWLj4(2/2) AAS
>>129
Mesh.FromFileで読み込んだMeshに、独自のVertexFormatを
後から定義したいということ?
とりあえず下の例ではXファイルから生成したMeshにNormal追加してるので参考に。
chsarpgamedev - Xファイルの描画
外部リンク[html]:www21.atwiki.jp
デバッガで法線ベクトルが正しそうな値が入っているのを確認して、かつ
省5
131: 127 2011/04/25(月)10:49 ID:xz94dpYm(1) AAS
上記のソースの一部を削除したらライティング処理ができました。
削除した所
//VertexFormat.Diffuse
//vert[n].Color = 取得した色
//public int Color
原因は、頂点データに色を付加してたからみたいです。
色は、別途マテリアルを適用させないといけなかったんですね。
132: 2011/04/26(火)08:04 ID:cWfiSBLo(1) AAS
Direct3D10/Direct3D11の詳細デバッグのやり方
ネイティブのDirectXとSlimDXの相関についてよく分かってなかったので検索しても把握できてなかった・・・
レベル低い話だけど、今後同じところで引っかかる人がいたときのために書いときます
つっこみ所あったら是非つっこんでください
?DebugViewダウンロード(VisualStudio Expressの場合。上位版は要らないらしい)
?DirectX SDKと一緒にインストールされるUtilitiesのDirectX ControlPanel起動
?DirectX 10.x/11タブのEdit Listにデバッグしたいプロジェクトのbin\Debug\フォルダあたりにある「.vshost.exe」拡張子のファイルを追加
省5
133(1): 2011/05/16(月)10:40 ID:XD0rb09K(1/2) AAS
プログラムを終了した時に出力ウィンドウに出てくる下記のメッセージは何を表しているのですか?
Object of type SlimDX.Direct3D9.Mesh was not disposed. Stack trace of object creation:
・・・
Total of 11 objects still alive.
134: 2011/05/16(月)10:52 ID:vb2M0wfD(1) AAS
リソースリークしてるぞってこと
Dispose忘れ
135: 133 2011/05/16(月)11:28 ID:XD0rb09K(2/2) AAS
なるほど、Disposeやっていませんでした。
ありがとうございます。
136: 2011/05/16(月)15:04 ID:SgNiWRkk(1) AAS
あ、最近のSlimDXはそんなこと教えてくれるのね。
対応するDirectX再頒布パッケージが強制的に新しくなっちゃうから、
長らく更新してないわ……。
137(1): 2011/05/16(月)22:48 ID:pYSUjBPJ(1/2) AAS
Dx11でコンピュートシェーダにMatrixを渡すにはどうすればいいんでしょうか?
ImmediateContext.ComputeShaderにはSetMatrix()のようなメソッドがなく、
コンピュートシェーダの.hlslファイルからfx_5_0プロファイルで無理やりEffectを作ってそこに渡してもシェーダー側には渡っていないようです。
138: 137 2011/05/16(月)23:23 ID:pYSUjBPJ(2/2) AAS
すいません、普通にサンプルの中に参考がありました…。
139: 2011/05/20(金)13:29 ID:GMn5NHik(1) AAS
slimDXで使えるFBXやColladaのローダはないでしょうか?
140(2): 2011/07/11(月)12:42 ID:piNnRBf/(1/2) AAS
描画エリアのリサイズをしようと思って、
PresentParameters pp = new PresentParameters()
{
BackBufferWidth = FormWidth, // フォームの幅と高さ
BackBufferHeight = FormHeight,
};
device.Reset(pp);
省4
141(1): 2011/07/11(月)14:51 ID:ZpoF+bdP(1) AAS
>>140
リソースの開放忘れ。
142: 140 2011/07/11(月)16:06 ID:piNnRBf/(2/2) AAS
>>141
一旦開放して再確保したらできました。
143: [age] 2011/08/07(日)18:11 ID:XCPITJXM(1) AAS
あげ
144: 2011/08/15(月)13:06 ID:dzreDaU2(1) AAS
そういえば、SlimDXでDirectX11による開発ってできるんですかね?
むしろVista以降をターゲットにした開発および開発環境整えた猛者はいますか?
145: 2011/08/16(火)16:45 ID:7U3gvwlZ(1) AAS
Vista以降をターゲットにするなら、SlimDXよりもMS謹製のライブラリのほうがいいと思うよ。
サポートされる範囲も多いし。
上下前次1-新書関写板覧索設栞歴
あと 52 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.024s