トップページgamedev
152コメント55KB

SlimDXについて語ろうぜ

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2010/01/31(日) 10:41:21ID:uYVfFOYk
公式
http://slimdx.org/

日本語の解説
http://mainori-se.sakura.ne.jp/slimdxwiki/

SlimDX は、.NET Framework に対応した言語(C#、VB.NET など)を使って
DirectX アプリケーションを開発することができるオープンソースのライブラリ(DLL)です。
0128名前は開発中のものです。2011/04/23(土) 18:42:03.05ID:0CpVWLj4
>>127
普通は頂点に位置とかUVとかと一緒に法線ベクトルそのものが入ってるよ。
01291272011/04/23(土) 19:33:02.95ID: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ファイルから法線情報を引き継ぐにはどうしたらいいのですか?
0130名前は開発中のものです。2011/04/23(土) 19:55:21.49ID:0CpVWLj4
>>129
Mesh.FromFileで読み込んだMeshに、独自のVertexFormatを
後から定義したいということ?

とりあえず下の例ではXファイルから生成したMeshにNormal追加してるので参考に。

chsarpgamedev - Xファイルの描画
http://www21.atwiki.jp/csharpgamedev/pages/32.html

デバッガで法線ベクトルが正しそうな値が入っているのを確認して、かつ
固定パイプラインを使っての描画なら、ライトが正しく設定されているかを
確認したほうがいいかも。

シェーダ使ってるならシェーダ自体が間違ってる可能性も。

ちょっとこれだけでは様々な原因が推測されるので、Mesh.CreateTeapot使って
どうなるかとか、問題の切り分けが必要だと思われる。
01311272011/04/25(月) 10:49:59.48ID:xz94dpYm
上記のソースの一部を削除したらライティング処理ができました。

削除した所
//VertexFormat.Diffuse
//vert[n].Color = 取得した色
//public int Color

原因は、頂点データに色を付加してたからみたいです。
色は、別途マテリアルを適用させないといけなかったんですね。
0132名前は開発中のものです。2011/04/26(火) 08:04:30.89ID:cWfiSBLo
Direct3D10/Direct3D11の詳細デバッグのやり方
ネイティブのDirectXとSlimDXの相関についてよく分かってなかったので検索しても把握できてなかった・・・
レベル低い話だけど、今後同じところで引っかかる人がいたときのために書いときます
つっこみ所あったら是非つっこんでください

@DebugViewダウンロード(VisualStudio Expressの場合。上位版は要らないらしい)
ADirectX SDKと一緒にインストールされるUtilitiesのDirectX ControlPanel起動
BDirectX 10.x/11タブのEdit Listにデバッグしたいプロジェクトのbin\Debug\フォルダあたりにある「.vshost.exe」拡張子のファイルを追加
CDebug LayerをForce On
DDebugView起動
EC# Expressで普通にビルド→DebugView確認

…でもWpfとSlimDX連携させたプロジェクトはこれでもちゃんとデバッグが出力されなかった…
なのでSlimDXのSampleを改造してデバッグ時に引っかかる問題の箇所だけ再現してデバッグしてます
0133名前は開発中のものです。2011/05/16(月) 10:40:24.35ID:XD0rb09K
プログラムを終了した時に出力ウィンドウに出てくる下記のメッセージは何を表しているのですか?

Object of type SlimDX.Direct3D9.Mesh was not disposed. Stack trace of object creation:
・・・
Total of 11 objects still alive.
0134名前は開発中のものです。2011/05/16(月) 10:52:18.79ID:vb2M0wfD
リソースリークしてるぞってこと
Dispose忘れ
01351332011/05/16(月) 11:28:05.55ID:XD0rb09K
なるほど、Disposeやっていませんでした。
ありがとうございます。
0136名前は開発中のものです。2011/05/16(月) 15:04:59.03ID:SgNiWRkk
あ、最近のSlimDXはそんなこと教えてくれるのね。
対応するDirectX再頒布パッケージが強制的に新しくなっちゃうから、
長らく更新してないわ……。
0137名前は開発中のものです。2011/05/16(月) 22:48:14.86ID:pYSUjBPJ
Dx11でコンピュートシェーダにMatrixを渡すにはどうすればいいんでしょうか?
ImmediateContext.ComputeShaderにはSetMatrix()のようなメソッドがなく、
コンピュートシェーダの.hlslファイルからfx_5_0プロファイルで無理やりEffectを作ってそこに渡してもシェーダー側には渡っていないようです。
01381372011/05/16(月) 23:23:29.97ID:pYSUjBPJ
すいません、普通にサンプルの中に参考がありました…。
0139名前は開発中のものです。2011/05/20(金) 13:29:58.03ID:GMn5NHik
slimDXで使えるFBXやColladaのローダはないでしょうか?
0140名前は開発中のものです。2011/07/11(月) 12:42:43.89ID:piNnRBf/
描画エリアのリサイズをしようと思って、
PresentParameters pp = new PresentParameters()
{
  BackBufferWidth = FormWidth, // フォームの幅と高さ
  BackBufferHeight = FormHeight,
};
device.Reset(pp);
で実行したら、
D3DERR_INVALIDCALL: Invalid call (-2005530516)
というエラーが出ました。

ウィンドウモードでリサイズをするにはどうしたらいいのですか?
0141名前は開発中のものです。2011/07/11(月) 14:51:54.45ID:ZpoF+bdP
>>140
リソースの開放忘れ。
01421402011/07/11(月) 16:06:54.64ID:piNnRBf/
>>141
一旦開放して再確保したらできました。
0143名前は開発中のものです。2011/08/07(日) 18:11:18.22ID:XCPITJXM
あげ
0144名前は開発中のものです。2011/08/15(月) 13:06:42.87ID:dzreDaU2
そういえば、SlimDXでDirectX11による開発ってできるんですかね?
むしろVista以降をターゲットにした開発および開発環境整えた猛者はいますか?
0145名前は開発中のものです。2011/08/16(火) 16:45:27.23ID:7U3gvwlZ
Vista以降をターゲットにするなら、SlimDXよりもMS謹製のライブラリのほうがいいと思うよ。
サポートされる範囲も多いし。
0146名前は開発中のものです。2011/08/18(木) 14:49:10.00ID:u3BnXhrZ
SlimDXのソースって公式以外であまりアップされていないですか?
0147名前は開発中のものです。2011/08/18(木) 16:52:55.02ID:Hrsxw23E
>>146
なぜ公式以外がアプデートする必要がある?
01481462011/08/18(木) 17:23:27.29ID:u3BnXhrZ
本体のソースではなくて、slimdxで作られたソースの方です。
Web上にslimdxで作成されたサンプルが無いのかなと思ったのです。
0149名前は開発中のものです。2011/08/28(日) 15:01:11.18ID:EyimipZI
XPでSlimDXは使えますか?
付属のサンプルを動かそうとしたらInitializeDeviceの行のところで決まって
D3DERR_INVALIDCALL: Invalid call (-2005530516)やSEHExceptionのエラーが出るんですが
0150名前は開発中のものです。2011/08/28(日) 15:56:23.92ID:QGmHgfHf
使えます
01511492011/08/28(日) 16:51:48.48ID:+1/bzXgn
>>150
ありがとうございます

となるとグラボの問題かなあ
0152名前は開発中のものです。2011/09/03(土) 11:47:13.02ID:vPbwbx1g
DirectXがちゃんとインスコできてないとか
■ このスレッドは過去ログ倉庫に格納されています