で、どうすんの。
今からやってみようと思ってたんだ。 とりあえずダウンロードしたぜ、次は? チュートリアルとかほしい
実は俺自身今四苦八苦してるとこなんだぜ 日本語の資料が少なすぎる ここをきっかけに日本でも広まるといいなぁと思ってるんだが
>>4 downloadしたファイルの中にSampleFrameworkってのがあるだろ
その中にいろいろあるから試しに読んだり実行したりしてみてくれ
7 :
名前は開発中のものです。 :2010/02/01(月) 06:55:45 ID:8X+6W91l
よくやく音楽ループ再生できるようになったorz///
アク禁テスト
やっと書けました、ということだけど うちはSampleFramework使わないでManagedDirectXからの移行で 3DもInputもかなり本格的に仕上がっている SampleFrameworkだとデバイスの初期化について載ってないので少々抵抗ある
SampleFrameworkはXNA触った人がやるには入りやすい
.NETでDirectXをやるならXNA、Managed DirectX、Windows API Code Packと他にも色々ある。 SlimDXは立場的に微妙な気がするけど実際どうなの?
>>11 Windows API Code PackはVistaや7移行でないと使えないからね
XNAは3Dがややこしい、DirectXのMesh.DrawSubsetが使えないのが辛い
その上effectの記述も面倒だし
何だかんだでSlimDXは使い易いよ
オープンソースなのにMDX以上に安定してるし
SlimDXを使ったゲームやアプリケーションで有名なものって何があるんでしょうか?
有名なものはぶっちゃけ無いよ。 不安をぬぐいたいならソースでも読んで見れば? MDXやCode Packを使うよりはマシだと思えるようになるから。
これからSlimDXで同人ゲー作って有名になりたいとこだ MDXも長いこと使ってたけど不具合目立つ もっと簡単にゲーム作りたいならDarkGDK(.NET版)もある、有料だけど 暇あったら手を出そうかなんて思ったり
16 :
名前は開発中のものです。 :2010/02/03(水) 06:46:28 ID:hKhRhaG2
おとといからslimSDKをいじくり回してたんだけど 俺の作りたいゲームが作れそうなメドがたったから 移行しようと思う これかなり良いよ
良いんだけどDirectInputだけが糞なんだよなあ
>>17 基本的にMDXと同じ機能が使えるけど
JoyStick初期化のとき、ゲームパッド刺さっていないとエラーになったりするのが辛い
後バージョン上がる度にDirectInput部分だけクラス名・メソッド・プロパティ名が変わったりするから
少々困惑させられる、他はほとんど名前固定で変更ないのに
次のバージョンではもう変えないで欲しい
今月DirectX SDKの最新が出たんで近いうちSlimDXも対応版が出ると思う。 それでどうなってるかだねえ
20 :
名前は開発中のものです。 :2010/02/09(火) 18:28:57 ID:rOpCrrSS
Direct3Dでは頂点の構造体すら用意されてないくらいなのに SlimDX.DirectInput.SoccerOffenseControlsとか頭おかしいとしか思えない どこがslimなのかと
22 :
名前は開発中のものです。 :2010/02/13(土) 10:24:19 ID:mqqbM8pa
半透明処理の方法を教えてほしいっす
Samples ソリューションの中の Direct3D9の Water の WaterEntity.cs の59行目、 device.SetRenderState(RenderState.AlphaBlendEnable, true); んで、67行目 末尾がfalseになっとるな? アルファブレンドを有効にして、描画、アルファブレンド無効としてるわけだ
ほんたまさんのスリムドカンのスレかと思った
25 :
名前は開発中のものです。 :2010/02/25(木) 19:31:57 ID:F3d7kXlA
PresentParameters.Windowed=falseからPresentParameters.Windowed=trueに切り替えると ウィンドウが最大化されるのはなんで? FormのLocationもSizeもWindowStateもFormBorderStyleもウィンドウ時と変わらないのに(なので当然サイズ変えても意味なし)
>>25 MDXの話で申し訳ないが、MDXならば勝手にTopMostとFormBorderStyleとClientSizeは変わってるよ。
多分ネイティブのDirectXがそうなってるんじゃないのか?
Developer SDKだけDLすればDirectXSDKは不要ですか?
参照の追加にSlimDXだけ追加すれば使えそうに書いてあるけど
SDKもバージョンあわせなきゃいけないってのも
>>1 の日本語解説に書いてある
あとMicrosoft .NET Framework 2.0 SDK以降も必要?
32bitマシンだしD3D9以上のこと使わないなら不要でしょうか?
どちらも500M近くあって気が遠くなる・・・
.NET Framework SDKはVSExpressがあれば不要 DirectX SDKは必須ではないけどいずれサンプルを見るために確実に必要になる C++のサンプルしかないけど読むくらいはできないときつい
これ使ったエロゲがでたな
SampleにWPFを使う為のフレームワークあったのね 自分で作ったのより使いやすそうだわ
>>27 SlimDXの再頒布パッケージは完全なDirectX再頒布パッケージを
収録してない嘘パッケージであることに注意。
インスコ直後のXPにこれ入れてもゲームは動かんぞ。
28の言うようにサンプルはC++で書かれているからそれを逐一C#に移植していくことになる。
>>30 Direct3DでレンダリングかけてるというWPFとSlimDXの組み合わせは一番面白そうだよな。
実際には組み合わせられないのが残念 別々に動かしてサーフェス転送してるだけ コントロールのウィンドウハンドル取れるWinFormsの方がまだ親和性は高い
34 :
名前は開発中のものです。 :2010/05/14(金) 15:50:38 ID:Agn9QNYG
35 :
名前は開発中のものです。 :2010/10/09(土) 21:42:28 ID:nr26u1G7
36 :
名前は開発中のものです。 :2010/10/23(土) 17:36:44 ID:dH4nrlFp
SlimDXでDirectX初めてやってるんだけどいいねコレ。 今はHLSLでシェーダを触り始めた辺り。 しかし、2Dゲーの為に苦労してるなぁ〜…って思うw GPU! GPU! GPU!
俺が使いたいのはピクセルシェーダなんだよぅ、おぅ
2005は対象外かよー
ソースのコンパイルの話っすか
40 :
名前は開発中のものです。 :2010/10/24(日) 14:49:27 ID:41k51lwY
頂点変換済みの板ポリをウィンドウのクライアント領域に描画して、 それをHLSLで弄るスケルトンがようやく完成したぜ… in D3D9 今度はピクセルシェーダでテスクチャにモザイクかけてみるよ(よ!) GPU! GPU! GPU!
そんなもんC++やXNAのサンプルでいくらでもあるじゃん だいたいそのまま移植すればいいだけ
42 :
名前は開発中のものです。 :2010/10/24(日) 16:39:37 ID:41k51lwY
>>41 ちょうどXNAのを拾って読んでる所w
理屈で考えたら移植で動く筈なんですよね
勉強がてら中身の理解も進めます
2次元エフェクトならWindows Presentation Foundation Pixel Shader Effects Libraryがお勧め 一通りまとまっててWPF使わなくても参考になる
>>43 thx!
まさにそれ落として読んでましたw
サンプル動画も見たんですが、どう考えても宝の山ですww
ただHLSLの基本がまだまだなので理解力がヤバイですorz
ティーカップの人の本を買って熟読するしかないですね。
P.S.
SlimDXの2DゲームエンジンってGorgonってのしかなさそうですね。
まぁ、自分用の作るから別にいいんですが、参考にしてみようかと。
SDL.netのスプライト周りが面白かったんで、その変も参考にしたいですね。
つーかGorgonはWin7(x64)だと何故かインストールで弾かれるw
.Net3.5は最初から入ってる筈なのにインストーラーが馬鹿なのかな?
だからあれほどzipでくれと言ってるのに。
45 :
名前は開発中のものです。 :2010/11/13(土) 09:04:43 ID:snFVsDxl
TextLayoyt:SetDrawingEffect()に渡すIClientDrawingEffectの実装の仕方がさっぱりわからん C#での実装の仕方を教えてほしい
DirectWrite使ったことないけど見てみたらComPointerに吹いた COMのIDWriteTextRendererをC#のCOM相互運用で実装して返せばいいのかな できなくはないんだろうけど俺には無理というかやりたくない
TextLayoutでクラスを実体化させたあとGetDrawingEffect()で取り出せる。(嘘)
48 :
名前は開発中のものです。 :2010/12/15(水) 17:22:05 ID:W0ff0zj1
visualstudio2010でslimdxsamplesのSimpleModel10をデバッグすると DXGI_ERROR_UNSUPPORTEDって出て途中で止まるんだけど理由わかりますか?
>>48 ハードウェアがサポートしてないから。
ただ、サポートしてないと言っても色々あって、
プログラムが必要としてない機能をデバイスに要求してて失敗してるだけなら、
それを外すことで他の部分は動かせるようになる。
50 :
名前は開発中のものです。 :2010/12/15(水) 21:24:32 ID:q2iTm1kx
>>49 やっぱりハードの問題だったか。
ありがとうございます
SlimDX使ってる人少ないなぁ。 やっぱりC#でDirectX使うのは少数派なんだろうな。 MicrosoftはなぜDirectXサポートを止めたのだろうか。 無理矢理XNAに引きずり込みたかったのだろうけど。
DirectX生で使うような人の多くは速度やらGCやらでC#は避けるんだろうなぁ あとドキュメントもほぼ全てC/C++向けに書かれてるし。 まぁ何だかんだ言ってC#の手軽さとXNAはよくあってると思う。 MSが作ってるだけあってよく作り込まれたフレームワークだし。
悪い意味で他にライバルが居ないんだよな C++は別格としても、それ以外ではC#のほかに現実的な選択肢が無い
やっぱりC++が現実的だよね。 DX10以降になればWindows API Code Packが使えるのかな。
俺はアプリやゲーム自体はC++で作りたいんだけど エディタとかは簡単にC#で作りたいんだよね そこで困るんだよなぁ DirectXを使用しないC#なんて描画が遅くて話にならないし 使うにしても現状XNAしか選択肢が無いけれどXBOXの仕様にひっぱられて DirectX9までの中途半端な物しか使えない やっぱりC#から普通にDirectXを呼び出せるManagedDirectXの存在は 必須だったと思うんだが、なぜ開発をやめてしまったのか・・・ だからSlimDXには超期待している
エディタなら配布のこともあまり考えなくて良いからSlimDXは良い選択だと思う
けどC#+SlimDXだと、DirectX+Net Framework+SlimDXが必要だからね。 SlimDxは添付できるし、DirectXもNet FrameworkもXP以降は最初から入って いるけど、今の最新にする場合はやっぱりインスコ必要だし。 そこが一番面倒なとこ。 SlimDxはDirectXの薄いラッパーだから、変に集約してなくて使いやすいので 選択肢としてはいいとは思う。
まあD言語とかの選択肢がないではないけどな。 WPFとの組み合わせが確立できるといいんだけどなぁ。
WPFはゲームには使えないだろ。 ブラウザゲー程度かと。 D言語は昨日サイト見てたけど、言語仕様がガラパゴスな感じ だったね
D言語って言語仕様だけ見ればかなり良い言語だと思うんだけど。 基本はC系だしガラパゴスな感じってのがよく分からん。 ただ、これでゲーム作るとなるとC#なんて目じゃ無いぐらいドキュメントが少ないっていう。
Dは互換性のない言語仕様変更をしょっちゅうやってるから実用言語としては話にならない C#も言語仕様は拡張しまくってるけど、MSだから上位互換は絶対に保たれる
>>61 D言語ってそんなに互換性のない仕様変更多いのか。
自作ゲームで採用するのを見送ってよかったぜ。
>>60 基本C系だけど、色んな言語のいろいろな機能を取り込んでいるから
機能多すぎと言った方がいいかもしれない。
まあ、基本だけ覚えて後は使わなければいいのだけど、それだとD言語
をわざわざ選択する必要はないし、ある機能を使ってこそ意味があると
思う。
なんかD言語スレ見たくなってしまったなw
あー、変な話降ってすまない。 元のSlimDXの話をどうぞ。
優越決まっても、別に最初から最後まで それしか知らないそればかり使えない事は無い ゲハ板の住人でもあるまいし C言語わかってもDirectX SDKのDXUT読める奴はそう居ない シェーダーとか使いこなせるようになるまでは C#でもDでもいいんじゃないか
むしろシェーダーとか使うようになるまでが言語の差が出てくると思うんだが 3Dの基礎はどの言語でも変わらない訳だし
曖昧な書き方して、意味を取り違えられたかな? CやC++で初めるのは良いよ 後々PIXを使えないと死ぬので、どのみちCヘッダーぐらい 読め無いと生き残れない だけど、DXUTをガチで相手したら駄目 Cがこういう糞言語という訳でない
DXUTはそれ自体が大規模化しちゃって、 DirectX(3D)の使い方を調べるのはやや不向きになっちゃってるのが残念だよね。 その点はSlimDXのサンプルのほうが簡潔で分かりやすい。 そいや、C#でプリミティブのVertexBuffer用のデータを作成するのって 皆はどうやってる? やっぱりstructを定義して1個ずつインスタンスを初期化していくんですかね。 この部分、ジェネリックがうまいこと動かずにすごく苦労する。
unsafeでポインタ使いまくり SlimDXなんか使ってる時点で安全性なんか関係ない
ポインタ使いまくりなら最初からC++でやればいい気がするが?
なんでそういう極論になるかな。 速度的にクリティカルなところとか、どうしても低レベルな処理をしたいところはあるだろ。 そういう箇所って言うのは一般にはほんの一部なんで、 そこのためだけに面倒なC++を使う必要がないのは大きなメリット。
ところで結構作り進めて今更気がついた。 DirectX9でのロスト対策がどうしようもないんだけどどうすればいい? Device.Resetかけた時点でInvalidCallを吐き出して進まん・・・
>>72 Direct3D9以前のデバイスロスト対策は、それはもう大変なんだよ。
今からやるならおすすめしないね。
仕事上、どうしてもやらないとというなら頑張れ。
>>69-71 ちょっと違うんだな。VertexBufferは速度面に問題があるのではなくて、
ジェネリックが使えない部分で困ってるんだよ。
C++のように何でもかんでもテンプレート化ということはできないから。
わからん。専用のstruct定義して配列流しこむ以外に何かあるの? もしかしてC++でいうTMPとか駆使してFVFや頂点宣言を自動で解決したいとかいう話?
>>74 MemoryStreamにバイト単位で書き込んでいく方法もある。
どうもこのあたりの部分をジェネリックでうまく一般化出来ないんだよね。
C#相談室あたりで質問したけど無理、という結論になったことが。
76 :
名前は開発中のものです。 :2010/12/21(火) 10:07:33 ID:IUyb5141
なんだコイツ? 会話する気が無いのか? VertexBufferの作成やSetFVFが簡単にできる C++の構文で、C#にはできないのはな〜だ? ってwなぞなぞかよw 聞きかじった知識があるだけで、何も理解してない だろコレ
>>76 書かれてるレスをなぞなぞ呼ばわりしてるんだったら、
理解してないのはお前じゃないか。
SlimDXはC#でDirectXを扱えるようになる便利なライブラリだが、
VertexBufferのフォーマットを色々と弄りたい時に
C#の文法上の制限から扱いにくい場合があるという話をしているだけ。
じゃあ、C++文法上だとどんな書き方ができる?
頂点扱うメソッドやクラスはなんでもかんでも<TVertex>と書きたいということ? インターフェイス使って interface IPosition3D { Vector3 Position3D { get; set; } } interface ITexCoord2D { Vector2 TexCoord2D { get; set; } } where TVertex : struct, IPosition3D, ITexCoord2D みたいな感じで可能 構造体の場合は実行時に特殊化されるのでインターフェイス経由のメンバアクセスでもボックス化は発生しないけど プロパティ経由だからインライン展開されたとしてもコピーは消えないのでどうしても遅くなるのは仕方ない MemoryStreamとか使っていい程度なんだったら別に問題にはならんでしょ
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(); }
>>80 なんじゃこりゃw すごい動的なコードだなぁ。
VertexBuilder的なクラスの階層でジェネリックにすればいいのかなと
思って色々試したんだけど、うまくいかなかったんだよね。
それだったら別にリフレクションなんか使わなくても VertexElement[]を返すプロパティを宣言したインターフェイスをHOGEVertexに実装させて whereで要求すればいいだけじゃないの?
それC++でやってたソースみた事あんのか? なんだかな C++もC#も知らない その自分が未熟なことも知らない しまいには人を見下すだけで会話もできない
85 :
82 :2010/12/21(火) 16:15:24 ID:589aNUur
直接関係ないけどGetCustomAttributesがフィールドの宣言順に返ってくる保証は無いよ。 順番が保証されてるフィールド情報の列挙方法はリフレクションAPIには無いので、 VertexElement属性には明示的にインデックスを付ける必要がある。 どうせリフレクション使うんだったら、staticプロパティとしてVertexElement[]を返すプロパティを定義してしまって そっちに属性を付けた方がいいかもしれない。
>>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するとか)
。
ゲームのメインループ外に処理にできないと設計の意味が無い。
インターフェイスのstaticメンバはサポートされてないので staticフィールドを返すインスタンスメンバとして実装してdefault(T).GetDeclaration()かな
>>73 亀レスすまぬ
普通にロスト起こした時にSpriteやらのリセットをしてなかっただけだった。無事に対策できたっぽい
失礼しました
>>87 ゴメンtypo
× T.GetDeclaration() //コンパイルできません
○ T_array[0].GetDeclaration() //こんなもんかな
それから型パラメータは TVertex とかにしないとスゲー読みづらい
いやdefault(T).GetDeclaration()のほうがいい 構造体なのでdefault(T)でインスタンスが作れる
それと、リフレクション使うならこういうふうにシングルトンでキャッシュするのがいいよ class VertexInfo<TVertex> { public static readonly VertexInfo<TVertex> Instance = new VertexInfo<TVertex>(); public VertexElement[] Format { get; set; } private VertexInfo() { /*ここでリフレクション使ってFormatを初期化*/ } }
俺MDXから入った身なんだけど、Spriteでの拡大とか回転に悩んでるんだが。 SlimDXでのDirectX9オンリーで作りたいんだけど、MDXで作ってた時みたいにSprite.Draw2DでやろうとしてもDX10/11にしか無いんだよね。 要するにSlimDXでSpriteの拡大とか回転ってどうやんの? 本家DirectXの知識は殆ど無い。
Transformに変換行列入れる ネイティブのD3DXのラッパーっていうのはなんか気持ち悪いからSpriteは自作してるなあ
>>93 いまいちキチンと分かって無いんだけど、Matrix.Transformation2Dってものがあったんで試してみた。
が、表示されん。きちんと描画してるはずなのに何故だ・・・
>>94 SlimDXのサンプルは単純でよく出来てるから、
それを真似するところから始めるといいよ。
サンプルを見てみたが、SpriteとTexture使った拡大とか無かったわ・・・ うーむ、俺の考え違いだったのかも知れない。やはり一から勉強しなおす必要がありそうだ。
>>96 俺の場合、2Dの板ポリをGPU描画することが大半なので専用の計算をしている。
座標系が2D系と同じにすることを意図して、
Z軸のマイナス側からカメラを向ける。
そして板ポリの座標系がそれに合うようにワールド座標を設定しておく方式。
>>97 なるほど、ちょっとじっくり勉強しつつ試してみます。ありです。
ただMDX見たいなDraw2Dのように簡単に拡大とか出来たりする奴はSlimDXのDX9には無いってことでいいのかな。
ずっとMDXに頼ってきて最近SlimDXに移ってきたから・・・ 無知ですみません
>>98 それならなおさらD3DXSpriteを使えばいいじゃん。
度々すまない。 俺が思ってる簡単に拡大とかって言うのは、 Sprite.Draw(位置,Rectangle,サイズ,ロケーション) 見たいなもので、それが無いのかなと甘い考えをしてた。 D3DXSpriteと言われても良く分からなかった。 もうこれで分からなかったら迷惑になりそうなので引きます・・・
>>100 D3DXFontには変換座標かけつつ描画するモードがあるから、
たぶんSpriteにもあるはずなんだけど。
ただし、D3DXFontの場合は描画が遅くなったのであしからず。
(なぜかというと、変換かけない場合はVertexエンジンを使用せずに描画するから)
>>101 なるほど。試してみます。
お騒がせしました
SlimDX初心者です。 画像を表示するためにDirect3D9でテクスチャ表示をしようと思っているのですがどうしたら良いのか教えていただけないでしょうか? DirectInputを利用したキーボード入力、Direct3D9を利用した背景色の設定は出来ました。
>>103 サンプルプロジェクトのソースコードを読め。
age
3DモデルのツールみたいなものをSlimDXで作ろうとしてるのですが、別ウィンドウでダイアログを 出してボタン等のコントロールを表示することってできるのですか?
もちろんできる 普通にWinFormsやWPFで作って表示すればいいだけ というより、フォーム上に貼り付けたコントロールの上にSlimDXの描画を行う
109 :
107 :2011/03/24(木) 16:52:06.20 ID:o/XjgpCP
Winformに配置する部分ってフォームデザイナも使えるんですか?
使える SlimDXで描画したい部分にはパネルでも貼り付けといて そのウィンドウハンドルをDeviceのコンストラクタに渡せ
111 :
107 :2011/03/24(木) 17:14:42.98 ID:o/XjgpCP
なるほど、そのやり方でやってみます。 ありがとうございました。
112 :
107 :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() というやり方で合っていますでしょうか?
SlimDXのサンプルが掲載されているWebサイトって無いですか? 海外サイトでも構いません。
XNACCのサンプルとDirectXSDKのサンプル(C++)が一番役立つ
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); //* //////////////////////////////////////////
A テクスチャ(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というのがどうも相性が悪そうな感じを受けるのですが…
海外でもいいので情報交換をしてるフォーラムってないんですか?
gamedev.netはslimDX関連のスレッドをよく見かけるなぁ
SlimDXでDirectX関連で確保したメモリは、最後に手動で開放しないと残ってしまうんですか?
うん たしかナントカManagerみたいなのがあって そのstaticメンバとして全てのDirectX関連のリソースへの強参照を保持してて わざわざGCを動かなくしてる糞設計だったはず
オレは自前でリソース専用のガベコレを用意して、 明示的に解放させてるな(システムとしては参照カウンタ方式) SlimDX付属のフレームワークもそうなってるだろ?
SlimDXにあるUnprojectってスクリーン空間からオブジェクト空間にベクトルを射影させる関数ですか? MDXにあるUnprojectとは引数が違っている様に思うのですが、使い方が分かりません。
>>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;
}
>>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は普通にワールド*ビュー*プロジェクションのマトリクス渡す
>>120 今時、搭載メモリ8G12GB16GBはあたりまえだから、あんまり気にしなくていいんじゃないかな。
Xファイルの中にある法線ベクトルのインデックス番号ってどうやったら取れるのですか? 頂点バッファと頂点インデックスまでは取れてます。
>>127 普通は頂点に位置とかUVとかと一緒に法線ベクトルそのものが入ってるよ。
129 :
127 :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ファイルから法線情報を引き継ぐにはどうしたらいいのですか?
>>129 Mesh.FromFileで読み込んだMeshに、独自のVertexFormatを
後から定義したいということ?
とりあえず下の例ではXファイルから生成したMeshにNormal追加してるので参考に。
chsarpgamedev - Xファイルの描画
http://www21.atwiki.jp/csharpgamedev/pages/32.html デバッガで法線ベクトルが正しそうな値が入っているのを確認して、かつ
固定パイプラインを使っての描画なら、ライトが正しく設定されているかを
確認したほうがいいかも。
シェーダ使ってるならシェーダ自体が間違ってる可能性も。
ちょっとこれだけでは様々な原因が推測されるので、Mesh.CreateTeapot使って
どうなるかとか、問題の切り分けが必要だと思われる。
131 :
127 :2011/04/25(月) 10:49:59.48 ID:xz94dpYm
上記のソースの一部を削除したらライティング処理ができました。 削除した所 //VertexFormat.Diffuse //vert[n].Color = 取得した色 //public int Color 原因は、頂点データに色を付加してたからみたいです。 色は、別途マテリアルを適用させないといけなかったんですね。
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を改造してデバッグ時に引っかかる問題の箇所だけ再現してデバッグしてます
プログラムを終了した時に出力ウィンドウに出てくる下記のメッセージは何を表しているのですか? Object of type SlimDX.Direct3D9.Mesh was not disposed. Stack trace of object creation: ・・・ Total of 11 objects still alive.
リソースリークしてるぞってこと Dispose忘れ
135 :
133 :2011/05/16(月) 11:28:05.55 ID:XD0rb09K
なるほど、Disposeやっていませんでした。 ありがとうございます。
あ、最近のSlimDXはそんなこと教えてくれるのね。 対応するDirectX再頒布パッケージが強制的に新しくなっちゃうから、 長らく更新してないわ……。
Dx11でコンピュートシェーダにMatrixを渡すにはどうすればいいんでしょうか? ImmediateContext.ComputeShaderにはSetMatrix()のようなメソッドがなく、 コンピュートシェーダの.hlslファイルからfx_5_0プロファイルで無理やりEffectを作ってそこに渡してもシェーダー側には渡っていないようです。
138 :
137 :2011/05/16(月) 23:23:29.97 ID:pYSUjBPJ
すいません、普通にサンプルの中に参考がありました…。
slimDXで使えるFBXやColladaのローダはないでしょうか?
描画エリアのリサイズをしようと思って、 PresentParameters pp = new PresentParameters() { BackBufferWidth = FormWidth, // フォームの幅と高さ BackBufferHeight = FormHeight, }; device.Reset(pp); で実行したら、 D3DERR_INVALIDCALL: Invalid call (-2005530516) というエラーが出ました。 ウィンドウモードでリサイズをするにはどうしたらいいのですか?
142 :
140 :2011/07/11(月) 16:06:54.64 ID:piNnRBf/
あげ
そういえば、SlimDXでDirectX11による開発ってできるんですかね? むしろVista以降をターゲットにした開発および開発環境整えた猛者はいますか?
Vista以降をターゲットにするなら、SlimDXよりもMS謹製のライブラリのほうがいいと思うよ。 サポートされる範囲も多いし。
SlimDXのソースって公式以外であまりアップされていないですか?
>>146 なぜ公式以外がアプデートする必要がある?
148 :
146 :2011/08/18(木) 17:23:27.29 ID:u3BnXhrZ
本体のソースではなくて、slimdxで作られたソースの方です。 Web上にslimdxで作成されたサンプルが無いのかなと思ったのです。
XPでSlimDXは使えますか? 付属のサンプルを動かそうとしたらInitializeDeviceの行のところで決まって D3DERR_INVALIDCALL: Invalid call (-2005530516)やSEHExceptionのエラーが出るんですが
使えます
151 :
149 :2011/08/28(日) 16:51:48.48 ID:+1/bzXgn
>>150 ありがとうございます
となるとグラボの問題かなあ
DirectXがちゃんとインスコできてないとか
SlimDX.dllをアプリと一緒に配布するときには readme.txtか何かにライセンスの文章を載せておかないとだめでしょうか?
>>153 確かライセンスはMITだったと思うので、それにあわせておけば良い。
ReadmeやHelp(このソフトについて)でライセンス表記をやっておく。。
ついでにすみませんが、これって商用もOKなんですか?
ダウンロードした
SharpDXとどっちがいいの?
これダウンロードしたんだけど、サンプルフォルダがない 公式にもそれらしいのがないし、一気にヤル気失せた
>>158 今は知らないけど、昔はソースコードをダウンロードしたら、
SDKのソースと一緒にサンプルのソースも付いてたんだけどね。
気になったので見てみたら最新のSDKには存在しないね
>>157 個人でSlimDXで開発してた人もSharpDXに移り始めてるし
有名なライブラリや描画エンジンでもSharpDXが使われているので
これからはSharpDXが主流になりそうだよ
まあこのスレでSharpDXの話をするのもなんだし
SharpDXのスレたててもいいかもね
日本語の情報がほとんど無いから情報交換にも良いと思う
>>161 SlimDXと比較して、SharpDXってどんなところがいいの?
ランタイムが要らない
>>163 なるほど。D3DXの対応を外してるってわけね。
SlimDX本体はほとんどDirectXのラッパーだから、
SlimDX自体は裸で配って、それに公式のDirectX再頒布パッケージをつけてるなあ。
以前にこのスレでも書いたけど、SlimDX公式のは最新のランタイムしかバンドルしてないから、
インストール直後のWindowsではファイルが足りなくて動かない。
SlimDXとSharpDXの作りは殆ど同じだから、スレ分けなくてもいいんじゃね
SharpDX良さそうだけど日本語の情報が皆無だな。 誰か情報まとめてくれ!
SharpDX試してみたけどサンプルがビルドできない 中身見るとSlimDXって書いてあるけどSlimDXから 持ってきただけなのかなこれ Direct3D9のMiniTriみたいなサンプルでさえ動かないんだけど 手直ししないと動かないの?
ちょっとSharpDX触ってみたんだけど Frame型が値型になってて中身はポインタだらけという糞仕様だった 無駄に扱いにくくて継承も出来なくなるだけと思うんだが・・・? 他にもMeshContainerクラスの中にもポインタ多かった 型名や引数はSlimDXと同じなの多かったし Color4型にデフォルト色が用意されてたのは少し良かったが わざわざC#でポインタ使わせたがる仕様がダメだった
SlimDXでHLSLファイルを読み込む方法教えて D3DXCreateEffectFromFileと同等の機能やつなんだけど 探しても見つからない
Effect.FromFileなど SlimDX.Direct3D9.Effect型の静的関数にある とりあえずこんな質問をするってことは 『csharpgamedev @ ウィキ』を見てないな?
ウィキあったのか
age
Javaよりマシとはいえ、C#は.net4.0ランタイムに インストールが必須で敷居が高いのかな
うわっ!2012版ホントにサンプルがない 動かない動かないと不評だったから削除しちゃったのかもね
オワコン
slimdxが2012年で止まってるからSharpDXをやり始めた。 ソースがslimdxの時とほとんど同じなんだけど、なんか大きな違いってある?
全部がオワコン
ここって誰かいますか?
いないこともない
Main関数でしょっぱな Device device = new Device(DriverType.Hardware); するところで実行時エラーなんだけどどうすればいいの? 'System.IO.FileLoadException' のハンドルされていない例外が Microsoft.VisualStudio.HostingProcess.Utilities.dll で発生しました。 追加情報: 混合モード アセンブリはバージョン 'v2.0.50727' のランタイムに対して作成されており、追加の構成情報がないと 4.0 ランタイムでは読み込めません。
解決したわ。 .NET4.0使ってる場合はapp.configも手加えないといけないんだな。
おっとはやいな
Direct3D11とDirectWriteを扱いたいんです。
ココ⇒
http://www.aaronblog.us/?p=36 を参考にして、以下の様なコードを書いたのですが、
http://pastebin.com/swdN6dp3 コメントの書いてあるところで以下の例外が出ます。
SlimDX.Direct3D10/Direct3D10Exception{"E_INVALIDARG: An invalid parameter was passed to the returning function (-2147024809)"}
確かに、例外の出る行は参考にしたサイトとコードを変更しました。というのも参考にしたサイトにかいてあるメソッドのオーバーロードが存在しなかったからです。
どうかわかる方いたらアドバイスを頂きたいと思います。教えてエロイ人!
誰かいるんかねここ、、、っておれかw
ノ
C#でツール作る時に、ビューの部分をSlimDXでやると便利だな。
SharpDXのサンプルの一部に、「Slimdx」というスペルがあったんですが、SlimdxとSharpDXの関係って何かあるの?
最新版インストールしたらサンプル入ってませんでした。お手上げです。
slimdx reference でググりもしないでお手上げとか、プログラマじゃない人なのか
DirectX未経験者じゃないの? SlimDXはC++でDirectXいじってた人だとわかりやすいけど、そうじゃない人には難しい気がする。 なので、DirectXSDKのヘルプも参考にしてみるのもいいと思うがどうなんだろう。
前のバージョンにサンプルが入ってるよ。
194 :
名前は開発中のものです。 :2014/09/15(月) 14:08:06.49 ID:EWv1CcRm
Slimdx.Directinput.Effectのインスタンスを作れないんですが (This function called is not supported) やっぱりまだ動かないんでしょうか
195 :
名前は開発中のものです。 :
2014/11/19(水) 16:13:50.34 ID:/f6I7Mz5