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)です。
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使って
どうなるかとか、問題の切り分けが必要だと思われる。
■ このスレッドは過去ログ倉庫に格納されています