SlimDXについて語ろうぜ
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2010/01/31(日) 10:41:21ID:uYVfFOYkhttp://slimdx.org/
日本語の解説
http://mainori-se.sakura.ne.jp/slimdxwiki/
SlimDX は、.NET Framework に対応した言語(C#、VB.NET など)を使って
DirectX アプリケーションを開発することができるオープンソースのライブラリ(DLL)です。
0002名前は開発中のものです。
2010/01/31(日) 11:11:12ID:P37elB520003名前は開発中のものです。
2010/01/31(日) 11:31:50ID:uYVfFOYkまずダウンロードしてくれ
0004名前は開発中のものです。
2010/01/31(日) 20:58:32ID:pjpwyVdWとりあえずダウンロードしたぜ、次は?
チュートリアルとかほしい
0005名前は開発中のものです。
2010/01/31(日) 21:06:42ID:uYVfFOYk日本語の資料が少なすぎる
ここをきっかけに日本でも広まるといいなぁと思ってるんだが
0006名前は開発中のものです。
2010/01/31(日) 21:08:10ID:uYVfFOYkdownloadしたファイルの中にSampleFrameworkってのがあるだろ
その中にいろいろあるから試しに読んだり実行したりしてみてくれ
0007名前は開発中のものです。
2010/02/01(月) 06:55:45ID:8X+6W91l0008名前は開発中のものです。
2010/02/02(火) 17:51:23ID:+lJWZMUB0009名前は開発中のものです。
2010/02/02(火) 17:56:37ID:+lJWZMUBうちはSampleFramework使わないでManagedDirectXからの移行で
3DもInputもかなり本格的に仕上がっている
SampleFrameworkだとデバイスの初期化について載ってないので少々抵抗ある
0010名前は開発中のものです。
2010/02/02(火) 18:05:14ID:6T1hs+2r0011名前は開発中のものです。
2010/02/02(火) 18:14:57ID:C8VPblcfSlimDXは立場的に微妙な気がするけど実際どうなの?
0012名前は開発中のものです。
2010/02/02(火) 18:20:31ID:+lJWZMUBWindows API Code PackはVistaや7移行でないと使えないからね
XNAは3Dがややこしい、DirectXのMesh.DrawSubsetが使えないのが辛い
その上effectの記述も面倒だし
何だかんだでSlimDXは使い易いよ
オープンソースなのにMDX以上に安定してるし
0013名前は開発中のものです。
2010/02/02(火) 19:14:58ID:C8VPblcf0014名前は開発中のものです。
2010/02/03(水) 01:17:47ID:SBy6WAi8不安をぬぐいたいならソースでも読んで見れば?
MDXやCode Packを使うよりはマシだと思えるようになるから。
0015名前は開発中のものです。
2010/02/03(水) 02:00:18ID:g/HVJ6AFMDXも長いこと使ってたけど不具合目立つ
もっと簡単にゲーム作りたいならDarkGDK(.NET版)もある、有料だけど
暇あったら手を出そうかなんて思ったり
0016名前は開発中のものです。
2010/02/03(水) 06:46:28ID:hKhRhaG2俺の作りたいゲームが作れそうなメドがたったから
移行しようと思う これかなり良いよ
0017名前は開発中のものです。
2010/02/03(水) 21:24:28ID:y42hZeU60018名前は開発中のものです。
2010/02/03(水) 23:32:46ID:g/HVJ6AF基本的にMDXと同じ機能が使えるけど
JoyStick初期化のとき、ゲームパッド刺さっていないとエラーになったりするのが辛い
後バージョン上がる度にDirectInput部分だけクラス名・メソッド・プロパティ名が変わったりするから
少々困惑させられる、他はほとんど名前固定で変更ないのに
次のバージョンではもう変えないで欲しい
0019名前は開発中のものです。
2010/02/07(日) 13:43:07ID:NXDiksatそれでどうなってるかだねえ
0020名前は開発中のものです。
2010/02/09(火) 18:28:57ID:rOpCrrSSSlimDX.DirectInput.SoccerOffenseControlsとか頭おかしいとしか思えない
どこがslimなのかと
0021名前は開発中のものです。
2010/02/13(土) 10:00:53ID:gk9dzd2/SlimDX関連 いろいろ
http://code.google.com/hosting/search?q=label%3ASlimDX&projectsearch=Search+projects
視差遮蔽マッピング ( Parallax Occlusion Mapping )
http://jldoty.com/geek/mdx_pom/MDX_POM.html
↑がよくわからん奴は
3Dグラフィックス・マニアックス
18 バンプマッピングの先にあるもの(2)〜視差遮蔽マッピング
http://journal.mycom.co.jp/column/graphics/018/index.html
つうかこのコラム一通りみれ
0022名前は開発中のものです。
2010/02/13(土) 10:24:19ID:mqqbM8pa0023名前は開発中のものです。
2010/02/13(土) 11:39:39ID:gk9dzd2/WaterEntity.cs の59行目、
device.SetRenderState(RenderState.AlphaBlendEnable, true);
んで、67行目 末尾がfalseになっとるな?
アルファブレンドを有効にして、描画、アルファブレンド無効としてるわけだ
0024名前は開発中のものです。
2010/02/16(火) 06:28:27ID:lwpkWEcJ0025名前は開発中のものです。
2010/02/25(木) 19:31:57ID:F3d7kXlAウィンドウが最大化されるのはなんで?
FormのLocationもSizeもWindowStateもFormBorderStyleもウィンドウ時と変わらないのに(なので当然サイズ変えても意味なし)
0026名前は開発中のものです。
2010/03/03(水) 19:09:28ID:kC+oOCRKMDXの話で申し訳ないが、MDXならば勝手にTopMostとFormBorderStyleとClientSizeは変わってるよ。
多分ネイティブのDirectXがそうなってるんじゃないのか?
0027名前は開発中のものです。
2010/03/09(火) 11:14:28ID:/qSOVn5X参照の追加にSlimDXだけ追加すれば使えそうに書いてあるけど
SDKもバージョンあわせなきゃいけないってのも>>1の日本語解説に書いてある
あとMicrosoft .NET Framework 2.0 SDK以降も必要?
32bitマシンだしD3D9以上のこと使わないなら不要でしょうか?
どちらも500M近くあって気が遠くなる・・・
0028名前は開発中のものです。
2010/03/09(火) 21:08:29ID:SHDHNGTODirectX SDKは必須ではないけどいずれサンプルを見るために確実に必要になる
C++のサンプルしかないけど読むくらいはできないときつい
0029名前は開発中のものです。
2010/03/14(日) 09:10:06ID:Ob77Xb8B0030名前は開発中のものです。
2010/03/18(木) 19:02:29ID:sAIb3WQr自分で作ったのより使いやすそうだわ
0031名前は開発中のものです。
2010/03/21(日) 20:18:08ID:CzRwkR6ASlimDXの再頒布パッケージは完全なDirectX再頒布パッケージを
収録してない嘘パッケージであることに注意。
インスコ直後のXPにこれ入れてもゲームは動かんぞ。
28の言うようにサンプルはC++で書かれているからそれを逐一C#に移植していくことになる。
0032名前は開発中のものです。
2010/03/21(日) 20:21:40ID:CzRwkR6ADirect3DでレンダリングかけてるというWPFとSlimDXの組み合わせは一番面白そうだよな。
0033名前は開発中のものです。
2010/03/21(日) 20:57:09ID:BNf6aD+I別々に動かしてサーフェス転送してるだけ
コントロールのウィンドウハンドル取れるWinFormsの方がまだ親和性は高い
0034名前は開発中のものです。
2010/05/14(金) 15:50:38ID:Agn9QNYG0035名前は開発中のものです。
2010/10/09(土) 21:42:28ID:nr26u1G70036名前は開発中のものです。
2010/10/23(土) 17:36:44ID:dH4nrlFp今はHLSLでシェーダを触り始めた辺り。
しかし、2Dゲーの為に苦労してるなぁ〜…って思うw
GPU! GPU! GPU!
0037名前は開発中のものです。
2010/10/23(土) 17:41:32ID:dH4nrlFp0038名前は開発中のものです。
2010/10/23(土) 19:02:57ID:NYvWtI7E0039名前は開発中のものです。
2010/10/23(土) 21:01:27ID:dH4nrlFp0040名前は開発中のものです。
2010/10/24(日) 14:49:27ID:41k51lwYそれをHLSLで弄るスケルトンがようやく完成したぜ… in D3D9
今度はピクセルシェーダでテスクチャにモザイクかけてみるよ(よ!)
GPU! GPU! GPU!
0041名前は開発中のものです。
2010/10/24(日) 16:07:26ID:0z3YDA8Cだいたいそのまま移植すればいいだけ
0042名前は開発中のものです。
2010/10/24(日) 16:39:37ID:41k51lwYちょうどXNAのを拾って読んでる所w
理屈で考えたら移植で動く筈なんですよね
勉強がてら中身の理解も進めます
0043名前は開発中のものです。
2010/10/24(日) 16:49:12ID:0z3YDA8C一通りまとまっててWPF使わなくても参考になる
0044名前は開発中のものです。
2010/10/24(日) 17:13:50ID:41k51lwYまさにそれ落として読んでましたw
サンプル動画も見たんですが、どう考えても宝の山ですww
ただHLSLの基本がまだまだなので理解力がヤバイですorz
ティーカップの人の本を買って熟読するしかないですね。
P.S.
SlimDXの2DゲームエンジンってGorgonってのしかなさそうですね。
まぁ、自分用の作るから別にいいんですが、参考にしてみようかと。
SDL.netのスプライト周りが面白かったんで、その変も参考にしたいですね。
つーかGorgonはWin7(x64)だと何故かインストールで弾かれるw
.Net3.5は最初から入ってる筈なのにインストーラーが馬鹿なのかな?
だからあれほどzipでくれと言ってるのに。
0045名前は開発中のものです。
2010/11/13(土) 09:04:43ID:snFVsDxlC#での実装の仕方を教えてほしい
0046名前は開発中のものです。
2010/11/13(土) 12:26:45ID:qup/FXeeCOMのIDWriteTextRendererをC#のCOM相互運用で実装して返せばいいのかな
できなくはないんだろうけど俺には無理というかやりたくない
0047名前は開発中のものです。
2010/11/14(日) 13:07:09ID:VAytE0MM0048名前は開発中のものです。
2010/12/15(水) 17:22:05ID:W0ff0zj1DXGI_ERROR_UNSUPPORTEDって出て途中で止まるんだけど理由わかりますか?
0049名前は開発中のものです。
2010/12/15(水) 17:31:36ID:D5FJhaCtハードウェアがサポートしてないから。
ただ、サポートしてないと言っても色々あって、
プログラムが必要としてない機能をデバイスに要求してて失敗してるだけなら、
それを外すことで他の部分は動かせるようになる。
0050名前は開発中のものです。
2010/12/15(水) 21:24:32ID:q2iTm1kxやっぱりハードの問題だったか。
ありがとうございます
0051名前は開発中のものです。
2010/12/18(土) 01:42:46ID:4XOJBpRQやっぱりC#でDirectX使うのは少数派なんだろうな。
MicrosoftはなぜDirectXサポートを止めたのだろうか。
無理矢理XNAに引きずり込みたかったのだろうけど。
0052名前は開発中のものです。
2010/12/18(土) 09:57:31ID:JWorHuxcあとドキュメントもほぼ全てC/C++向けに書かれてるし。
まぁ何だかんだ言ってC#の手軽さとXNAはよくあってると思う。
MSが作ってるだけあってよく作り込まれたフレームワークだし。
0053名前は開発中のものです。
2010/12/18(土) 11:43:06ID:NqdLgtTbC++は別格としても、それ以外ではC#のほかに現実的な選択肢が無い
0054名前は開発中のものです。
2010/12/18(土) 20:11:14ID:4XOJBpRQDX10以降になればWindows API Code Packが使えるのかな。
0055名前は開発中のものです。
2010/12/18(土) 21:50:41ID:K2tyzowzエディタとかは簡単にC#で作りたいんだよね
そこで困るんだよなぁ
DirectXを使用しないC#なんて描画が遅くて話にならないし
使うにしても現状XNAしか選択肢が無いけれどXBOXの仕様にひっぱられて
DirectX9までの中途半端な物しか使えない
やっぱりC#から普通にDirectXを呼び出せるManagedDirectXの存在は
必須だったと思うんだが、なぜ開発をやめてしまったのか・・・
だからSlimDXには超期待している
0056名前は開発中のものです。
2010/12/18(土) 21:53:45ID:JWorHuxc0057名前は開発中のものです。
2010/12/18(土) 22:23:40ID:4XOJBpRQSlimDxは添付できるし、DirectXもNet FrameworkもXP以降は最初から入って
いるけど、今の最新にする場合はやっぱりインスコ必要だし。
そこが一番面倒なとこ。
SlimDxはDirectXの薄いラッパーだから、変に集約してなくて使いやすいので
選択肢としてはいいとは思う。
0058名前は開発中のものです。
2010/12/18(土) 22:56:19ID:5bWq6Od2WPFとの組み合わせが確立できるといいんだけどなぁ。
0059名前は開発中のものです。
2010/12/18(土) 23:58:01ID:4XOJBpRQブラウザゲー程度かと。
D言語は昨日サイト見てたけど、言語仕様がガラパゴスな感じ
だったね
0060名前は開発中のものです。
2010/12/19(日) 09:49:54ID:+uUW/+wM基本はC系だしガラパゴスな感じってのがよく分からん。
ただ、これでゲーム作るとなるとC#なんて目じゃ無いぐらいドキュメントが少ないっていう。
0061名前は開発中のものです。
2010/12/19(日) 14:39:17ID:tZJ4XwZSC#も言語仕様は拡張しまくってるけど、MSだから上位互換は絶対に保たれる
0062名前は開発中のものです。
2010/12/19(日) 14:55:42ID:tl1XfhrgD言語ってそんなに互換性のない仕様変更多いのか。
自作ゲームで採用するのを見送ってよかったぜ。
>>60
基本C系だけど、色んな言語のいろいろな機能を取り込んでいるから
機能多すぎと言った方がいいかもしれない。
まあ、基本だけ覚えて後は使わなければいいのだけど、それだとD言語
をわざわざ選択する必要はないし、ある機能を使ってこそ意味があると
思う。
0063名前は開発中のものです。
2010/12/19(日) 16:50:41ID:+uUW/+wM0064名前は開発中のものです。
2010/12/19(日) 17:15:07ID:tl1Xfhrg元のSlimDXの話をどうぞ。
0065名前は開発中のものです。
2010/12/19(日) 19:59:21ID:oIwD3nP1それしか知らないそればかり使えない事は無い
ゲハ板の住人でもあるまいし
C言語わかってもDirectX SDKのDXUT読める奴はそう居ない
シェーダーとか使いこなせるようになるまでは
C#でもDでもいいんじゃないか
0066名前は開発中のものです。
2010/12/19(日) 20:34:24ID:+uUW/+wM3Dの基礎はどの言語でも変わらない訳だし
0067名前は開発中のものです。
2010/12/19(日) 21:34:42ID:oIwD3nP1CやC++で初めるのは良いよ
後々PIXを使えないと死ぬので、どのみちCヘッダーぐらい
読め無いと生き残れない
だけど、DXUTをガチで相手したら駄目
Cがこういう糞言語という訳でない
0068名前は開発中のものです。
2010/12/19(日) 22:36:29ID:EYwGO04pDirectX(3D)の使い方を調べるのはやや不向きになっちゃってるのが残念だよね。
その点はSlimDXのサンプルのほうが簡潔で分かりやすい。
そいや、C#でプリミティブのVertexBuffer用のデータを作成するのって
皆はどうやってる?
やっぱりstructを定義して1個ずつインスタンスを初期化していくんですかね。
この部分、ジェネリックがうまいこと動かずにすごく苦労する。
0069名前は開発中のものです。
2010/12/19(日) 22:48:47ID:2VEpyIA3SlimDXなんか使ってる時点で安全性なんか関係ない
0070名前は開発中のものです。
2010/12/20(月) 22:37:09ID:YK+Rc81C0071名前は開発中のものです。
2010/12/20(月) 23:00:57ID:Ml895Bvs速度的にクリティカルなところとか、どうしても低レベルな処理をしたいところはあるだろ。
そういう箇所って言うのは一般にはほんの一部なんで、
そこのためだけに面倒なC++を使う必要がないのは大きなメリット。
0072名前は開発中のものです。
2010/12/21(火) 00:32:03ID:N/+0RCBNDirectX9でのロスト対策がどうしようもないんだけどどうすればいい?
Device.Resetかけた時点でInvalidCallを吐き出して進まん・・・
0073名前は開発中のものです。
2010/12/21(火) 01:17:54ID:FsRX6CKWDirect3D9以前のデバイスロスト対策は、それはもう大変なんだよ。
今からやるならおすすめしないね。
仕事上、どうしてもやらないとというなら頑張れ。
>>69-71
ちょっと違うんだな。VertexBufferは速度面に問題があるのではなくて、
ジェネリックが使えない部分で困ってるんだよ。
C++のように何でもかんでもテンプレート化ということはできないから。
0074名前は開発中のものです。
2010/12/21(火) 05:58:42ID:UFi6vgUKもしかしてC++でいうTMPとか駆使してFVFや頂点宣言を自動で解決したいとかいう話?
0075名前は開発中のものです。
2010/12/21(火) 08:52:18ID:FsRX6CKWMemoryStreamにバイト単位で書き込んでいく方法もある。
どうもこのあたりの部分をジェネリックでうまく一般化出来ないんだよね。
C#相談室あたりで質問したけど無理、という結論になったことが。
0076名前は開発中のものです。
2010/12/21(火) 10:07:33ID:IUyb5141会話する気が無いのか?
VertexBufferの作成やSetFVFが簡単にできる
C++の構文で、C#にはできないのはな〜だ?
ってwなぞなぞかよw
聞きかじった知識があるだけで、何も理解してない
だろコレ
0077名前は開発中のものです。
2010/12/21(火) 11:45:06ID:FsRX6CKW書かれてるレスをなぞなぞ呼ばわりしてるんだったら、
理解してないのはお前じゃないか。
SlimDXはC#でDirectXを扱えるようになる便利なライブラリだが、
VertexBufferのフォーマットを色々と弄りたい時に
C#の文法上の制限から扱いにくい場合があるという話をしているだけ。
0078名前は開発中のものです。
2010/12/21(火) 11:59:41ID:IUyb51410079名前は開発中のものです。
2010/12/21(火) 13:40:09ID:589aNUurインターフェイス使って
interface IPosition3D { Vector3 Position3D { get; set; } }
interface ITexCoord2D { Vector2 TexCoord2D { get; set; } }
where TVertex : struct, IPosition3D, ITexCoord2D みたいな感じで可能
構造体の場合は実行時に特殊化されるのでインターフェイス経由のメンバアクセスでもボックス化は発生しないけど
プロパティ経由だからインライン展開されたとしてもコピーは消えないのでどうしても遅くなるのは仕方ない
MemoryStreamとか使っていい程度なんだったら別に問題にはならんでしょ
0080名前は開発中のものです。
2010/12/21(火) 14:33:36ID:IUyb5141VertexDeclarationの自動化を解決させちまおうぜ
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();
}
0081名前は開発中のものです。
2010/12/21(火) 15:10:37ID:FsRX6CKWなんじゃこりゃw すごい動的なコードだなぁ。
VertexBuilder的なクラスの階層でジェネリックにすればいいのかなと
思って色々試したんだけど、うまくいかなかったんだよね。
0082名前は開発中のものです。
2010/12/21(火) 16:03:41ID:589aNUurVertexElement[]を返すプロパティを宣言したインターフェイスをHOGEVertexに実装させて
whereで要求すればいいだけじゃないの?
0083名前は開発中のものです。
2010/12/21(火) 16:08:34ID:IUyb5141なんだかな
C++もC#も知らない
その自分が未熟なことも知らない
しまいには人を見下すだけで会話もできない
0084名前は開発中のものです。
2010/12/21(火) 16:10:35ID:IUyb5141うん 俺もこんなの使って無い
008582
2010/12/21(火) 16:15:24ID:589aNUur順番が保証されてるフィールド情報の列挙方法はリフレクションAPIには無いので、
VertexElement属性には明示的にインデックスを付ける必要がある。
どうせリフレクション使うんだったら、staticプロパティとしてVertexElement[]を返すプロパティを定義してしまって
そっちに属性を付けた方がいいかもしれない。
0086名前は開発中のものです。
2010/12/21(火) 17:09:39ID:IUyb5141>宣言順に返ってくる保証は無いよ
本番では使って無くてよかった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するとか)
。
ゲームのメインループ外に処理にできないと設計の意味が無い。
0087名前は開発中のものです。
2010/12/21(火) 18:38:36ID:Xai41NPWstaticフィールドを返すインスタンスメンバとして実装してdefault(T).GetDeclaration()かな
0088名前は開発中のものです。
2010/12/21(火) 20:51:48ID:N/+0RCBN亀レスすまぬ
普通にロスト起こした時にSpriteやらのリセットをしてなかっただけだった。無事に対策できたっぽい
失礼しました
0089名前は開発中のものです。
2010/12/21(火) 23:09:44ID:IUyb5141ゴメンtypo
× T.GetDeclaration() //コンパイルできません
○ T_array[0].GetDeclaration() //こんなもんかな
それから型パラメータは TVertex とかにしないとスゲー読みづらい
0090名前は開発中のものです。
2010/12/21(火) 23:25:18ID:Xai41NPW構造体なのでdefault(T)でインスタンスが作れる
0091名前は開発中のものです。
2010/12/21(火) 23:36:17ID:Xai41NPWclass VertexInfo<TVertex> {
public static readonly VertexInfo<TVertex> Instance = new VertexInfo<TVertex>();
public VertexElement[] Format { get; set; }
private VertexInfo() { /*ここでリフレクション使ってFormatを初期化*/ }
}
0092名前は開発中のものです。
2011/01/23(日) 21:16:58ID:v5GChX7GSlimDXでのDirectX9オンリーで作りたいんだけど、MDXで作ってた時みたいにSprite.Draw2DでやろうとしてもDX10/11にしか無いんだよね。
要するにSlimDXでSpriteの拡大とか回転ってどうやんの?
本家DirectXの知識は殆ど無い。
0093名前は開発中のものです。
2011/01/23(日) 21:28:14ID:IvAtt79gネイティブのD3DXのラッパーっていうのはなんか気持ち悪いからSpriteは自作してるなあ
0094名前は開発中のものです。
2011/01/23(日) 22:19:47ID:v5GChX7Gいまいちキチンと分かって無いんだけど、Matrix.Transformation2Dってものがあったんで試してみた。
が、表示されん。きちんと描画してるはずなのに何故だ・・・
0095名前は開発中のものです。
2011/01/24(月) 00:11:56ID:ZV2/0eH0SlimDXのサンプルは単純でよく出来てるから、
それを真似するところから始めるといいよ。
0096名前は開発中のものです。
2011/01/24(月) 17:28:23ID:SbpYcvOyうーむ、俺の考え違いだったのかも知れない。やはり一から勉強しなおす必要がありそうだ。
0097名前は開発中のものです。
2011/01/24(月) 17:33:40ID:ZV2/0eH0俺の場合、2Dの板ポリをGPU描画することが大半なので専用の計算をしている。
座標系が2D系と同じにすることを意図して、
Z軸のマイナス側からカメラを向ける。
そして板ポリの座標系がそれに合うようにワールド座標を設定しておく方式。
0098名前は開発中のものです。
2011/01/24(月) 17:45:20ID:SbpYcvOyなるほど、ちょっとじっくり勉強しつつ試してみます。ありです。
ただMDX見たいなDraw2Dのように簡単に拡大とか出来たりする奴はSlimDXのDX9には無いってことでいいのかな。
ずっとMDXに頼ってきて最近SlimDXに移ってきたから・・・ 無知ですみません
0099名前は開発中のものです。
2011/01/24(月) 18:02:45ID:ZV2/0eH0それならなおさらD3DXSpriteを使えばいいじゃん。
0100名前は開発中のものです。
2011/01/26(水) 21:53:12ID:q2pNSJtE俺が思ってる簡単に拡大とかって言うのは、
Sprite.Draw(位置,Rectangle,サイズ,ロケーション)
見たいなもので、それが無いのかなと甘い考えをしてた。
D3DXSpriteと言われても良く分からなかった。
もうこれで分からなかったら迷惑になりそうなので引きます・・・
0101名前は開発中のものです。
2011/01/26(水) 22:59:48ID:Dys02ewdD3DXFontには変換座標かけつつ描画するモードがあるから、
たぶんSpriteにもあるはずなんだけど。
ただし、D3DXFontの場合は描画が遅くなったのであしからず。
(なぜかというと、変換かけない場合はVertexエンジンを使用せずに描画するから)
0102名前は開発中のものです。
2011/01/26(水) 23:00:52ID:q2pNSJtEなるほど。試してみます。
お騒がせしました
0103名前は開発中のものです。
2011/02/21(月) 01:33:37.79ID:FjA/EdKJ画像を表示するためにDirect3D9でテクスチャ表示をしようと思っているのですがどうしたら良いのか教えていただけないでしょうか?
DirectInputを利用したキーボード入力、Direct3D9を利用した背景色の設定は出来ました。
0104名前は開発中のものです。
2011/02/21(月) 04:26:22.73ID:e+9Xrrk1サンプルプロジェクトのソースコードを読め。
0105名前は開発中のものです。
2011/02/21(月) 20:14:03.45ID:da8+AaWUとりあえずこのへん
http://www21.atwiki.jp/csharpgamedev/pages/18.html
0106名前は開発中のものです。
2011/03/12(土) 19:58:15.04ID:gPTtXzoi0107名前は開発中のものです。
2011/03/24(木) 15:10:27.06ID:o/XjgpCP出してボタン等のコントロールを表示することってできるのですか?
0108名前は開発中のものです。
2011/03/24(木) 15:12:42.59ID:+jtjlJX2普通にWinFormsやWPFで作って表示すればいいだけ
というより、フォーム上に貼り付けたコントロールの上にSlimDXの描画を行う
0109107
2011/03/24(木) 16:52:06.20ID:o/XjgpCP0110名前は開発中のものです。
2011/03/24(木) 17:00:46.83ID:+jtjlJX2SlimDXで描画したい部分にはパネルでも貼り付けといて
そのウィンドウハンドルをDeviceのコンストラクタに渡せ
0111107
2011/03/24(木) 17:14:42.98ID:o/XjgpCPありがとうございました。
0112107
2011/03/24(木) 17:48:46.54ID:o/XjgpCP// var form = new RenderForm("SlimDX Sample"); ←はコメントアウトして
var device = new Device(new Direct3D(), 0, DeviceType.Hardware, パネル.Handle, CreateFlags.HardwareVertexProcessing, new PresentParameters()
というやり方で合っていますでしょうか?
0113名前は開発中のものです。
2011/03/25(金) 10:54:48.65ID:L6sPV2wn海外サイトでも構いません。
0114名前は開発中のものです。
2011/03/25(金) 21:09:55.09ID:vv767kg8ウィンドウハンドルを入れるところは合ってるけど、色んなものが抜けてる。
とりあえずDirect3Dオブジェクトを外に出して、更にPresentParametersに
適切な値を設定するところから。
>>113
ttp://www21.atwiki.jp/csharpgamedev/pages/18.html
あとSlimDX SDKのサンプル。
0115名前は開発中のものです。
2011/03/25(金) 21:18:59.16ID:8nQu2/1X0116名前は開発中のものです。
2011/03/29(火) 23:06:19.15ID:7uGGHTvIどなたかヒントなどお持ちの方いらっしゃいましたら教えてください…。
@
新しいテクスチャを作る際の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); //*
//////////////////////////////////////////
0117名前は開発中のものです。
2011/03/29(火) 23:06:29.29ID: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というのがどうも相性が悪そうな感じを受けるのですが…
0118名前は開発中のものです。
2011/04/05(火) 18:00:52.28ID:+LS+lOHR0119名前は開発中のものです。
2011/04/06(水) 02:47:44.18ID:PtBPsaxE0120名前は開発中のものです。
2011/04/09(土) 10:55:44.62ID:sKYCeLl00121名前は開発中のものです。
2011/04/09(土) 12:36:51.53ID:QWLtEJqLたしかナントカManagerみたいなのがあって
そのstaticメンバとして全てのDirectX関連のリソースへの強参照を保持してて
わざわざGCを動かなくしてる糞設計だったはず
0122名前は開発中のものです。
2011/04/09(土) 13:35:47.32ID:oX/gW5Mu明示的に解放させてるな(システムとしては参照カウンタ方式)
SlimDX付属のフレームワークもそうなってるだろ?
0123名前は開発中のものです。
2011/04/12(火) 16:16:23.71ID:Y/I5qVEjMDXにあるUnprojectとは引数が違っている様に思うのですが、使い方が分かりません。
0124名前は開発中のものです。
2011/04/12(火) 16:22:02.28ID:155qZFtN実装を見て考えたら?
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;
}
0125名前は開発中のものです。
2011/04/12(火) 23:28:55.22ID:4dFtS2x0俺はこんな感じで使ってる(マウスカーソルを射影)
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は普通にワールド*ビュー*プロジェクションのマトリクス渡す
0126名前は開発中のものです。
2011/04/22(金) 02:56:05.21ID:UveiKLLT今時、搭載メモリ8G12GB16GBはあたりまえだから、あんまり気にしなくていいんじゃないかな。
0127名前は開発中のものです。
2011/04/23(土) 17:14:08.38ID:H3hA0vRV頂点バッファと頂点インデックスまでは取れてます。
0128名前は開発中のものです。
2011/04/23(土) 18:42:03.05ID:0CpVWLj4普通は頂点に位置とかUVとかと一緒に法線ベクトルそのものが入ってるよ。
0129127
2011/04/23(土) 19:33:02.95ID:H3hA0vRVありがとうございます、法線ベクトルも取れました。
でも、せっかく取れた法線ベクトルですが、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:0CpVWLj4Mesh.FromFileで読み込んだMeshに、独自のVertexFormatを
後から定義したいということ?
とりあえず下の例ではXファイルから生成したMeshにNormal追加してるので参考に。
chsarpgamedev - Xファイルの描画
http://www21.atwiki.jp/csharpgamedev/pages/32.html
デバッガで法線ベクトルが正しそうな値が入っているのを確認して、かつ
固定パイプラインを使っての描画なら、ライトが正しく設定されているかを
確認したほうがいいかも。
シェーダ使ってるならシェーダ自体が間違ってる可能性も。
ちょっとこれだけでは様々な原因が推測されるので、Mesh.CreateTeapot使って
どうなるかとか、問題の切り分けが必要だと思われる。
0131127
2011/04/25(月) 10:49:59.48ID:xz94dpYm削除した所
//VertexFormat.Diffuse
//vert[n].Color = 取得した色
//public int Color
原因は、頂点データに色を付加してたからみたいです。
色は、別途マテリアルを適用させないといけなかったんですね。
0132名前は開発中のものです。
2011/04/26(火) 08:04:30.89ID:cWfiSBLoネイティブの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:XD0rb09KObject 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:vb2M0wfDDispose忘れ
0135133
2011/05/16(月) 11:28:05.55ID:XD0rb09Kありがとうございます。
0136名前は開発中のものです。
2011/05/16(月) 15:04:59.03ID:SgNiWRkk対応するDirectX再頒布パッケージが強制的に新しくなっちゃうから、
長らく更新してないわ……。
0137名前は開発中のものです。
2011/05/16(月) 22:48:14.86ID:pYSUjBPJImmediateContext.ComputeShaderにはSetMatrix()のようなメソッドがなく、
コンピュートシェーダの.hlslファイルからfx_5_0プロファイルで無理やりEffectを作ってそこに渡してもシェーダー側には渡っていないようです。
0138137
2011/05/16(月) 23:23:29.97ID:pYSUjBPJ0139名前は開発中のものです。
2011/05/20(金) 13:29:58.03ID:GMn5NHik0140名前は開発中のものです。
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リソースの開放忘れ。
0143名前は開発中のものです。
2011/08/07(日) 18:11:18.22ID:XCPITJXM0144名前は開発中のものです。
2011/08/15(月) 13:06:42.87ID:dzreDaU2むしろVista以降をターゲットにした開発および開発環境整えた猛者はいますか?
0145名前は開発中のものです。
2011/08/16(火) 16:45:27.23ID:7U3gvwlZサポートされる範囲も多いし。
0146名前は開発中のものです。
2011/08/18(木) 14:49:10.00ID:u3BnXhrZ0147名前は開発中のものです。
2011/08/18(木) 16:52:55.02ID:Hrsxw23Eなぜ公式以外がアプデートする必要がある?
0148146
2011/08/18(木) 17:23:27.29ID:u3BnXhrZWeb上にslimdxで作成されたサンプルが無いのかなと思ったのです。
0149名前は開発中のものです。
2011/08/28(日) 15:01:11.18ID:EyimipZI付属のサンプルを動かそうとしたらInitializeDeviceの行のところで決まって
D3DERR_INVALIDCALL: Invalid call (-2005530516)やSEHExceptionのエラーが出るんですが
0150名前は開発中のものです。
2011/08/28(日) 15:56:23.92ID:QGmHgfHf0152名前は開発中のものです。
2011/09/03(土) 11:47:13.02ID:vPbwbx1g■ このスレッドは過去ログ倉庫に格納されています