公式
http://slimdx.org/
日本語の解説
http://mainori-se.sakura.ne.jp/slimdxwiki/
SlimDX は、.NET Framework に対応した言語(C#、VB.NET など)を使って
DirectX アプリケーションを開発することができるオープンソースのライブラリ(DLL)です。
探検
SlimDXについて語ろうぜ
■ このスレッドは過去ログ倉庫に格納されています
2010/01/31(日) 10:41:21ID:uYVfFOYk
2010/01/31(日) 11:11:12ID:P37elB52
で、どうすんの。
2010/01/31(日) 11:31:50ID:uYVfFOYk
>>2
まずダウンロードしてくれ
まずダウンロードしてくれ
2010/01/31(日) 20:58:32ID:pjpwyVdW
今からやってみようと思ってたんだ。
とりあえずダウンロードしたぜ、次は?
チュートリアルとかほしい
とりあえずダウンロードしたぜ、次は?
チュートリアルとかほしい
2010/01/31(日) 21:06:42ID:uYVfFOYk
実は俺自身今四苦八苦してるとこなんだぜ
日本語の資料が少なすぎる
ここをきっかけに日本でも広まるといいなぁと思ってるんだが
日本語の資料が少なすぎる
ここをきっかけに日本でも広まるといいなぁと思ってるんだが
2010/01/31(日) 21:08:10ID:uYVfFOYk
7名前は開発中のものです。
2010/02/01(月) 06:55:45ID:8X+6W91l よくやく音楽ループ再生できるようになったorz///
2010/02/02(火) 17:51:23ID:+lJWZMUB
アク禁テスト
2010/02/02(火) 17:56:37ID:+lJWZMUB
やっと書けました、ということだけど
うちはSampleFramework使わないでManagedDirectXからの移行で
3DもInputもかなり本格的に仕上がっている
SampleFrameworkだとデバイスの初期化について載ってないので少々抵抗ある
うちはSampleFramework使わないでManagedDirectXからの移行で
3DもInputもかなり本格的に仕上がっている
SampleFrameworkだとデバイスの初期化について載ってないので少々抵抗ある
2010/02/02(火) 18:05:14ID:6T1hs+2r
SampleFrameworkはXNA触った人がやるには入りやすい
2010/02/02(火) 18:14:57ID:C8VPblcf
.NETでDirectXをやるならXNA、Managed DirectX、Windows API Code Packと他にも色々ある。
SlimDXは立場的に微妙な気がするけど実際どうなの?
SlimDXは立場的に微妙な気がするけど実際どうなの?
2010/02/02(火) 18:20:31ID:+lJWZMUB
>>11
Windows API Code PackはVistaや7移行でないと使えないからね
XNAは3Dがややこしい、DirectXのMesh.DrawSubsetが使えないのが辛い
その上effectの記述も面倒だし
何だかんだでSlimDXは使い易いよ
オープンソースなのにMDX以上に安定してるし
Windows API Code PackはVistaや7移行でないと使えないからね
XNAは3Dがややこしい、DirectXのMesh.DrawSubsetが使えないのが辛い
その上effectの記述も面倒だし
何だかんだでSlimDXは使い易いよ
オープンソースなのにMDX以上に安定してるし
2010/02/02(火) 19:14:58ID:C8VPblcf
SlimDXを使ったゲームやアプリケーションで有名なものって何があるんでしょうか?
2010/02/03(水) 01:17:47ID:SBy6WAi8
有名なものはぶっちゃけ無いよ。
不安をぬぐいたいならソースでも読んで見れば?
MDXやCode Packを使うよりはマシだと思えるようになるから。
不安をぬぐいたいならソースでも読んで見れば?
MDXやCode Packを使うよりはマシだと思えるようになるから。
2010/02/03(水) 02:00:18ID:g/HVJ6AF
これからSlimDXで同人ゲー作って有名になりたいとこだ
MDXも長いこと使ってたけど不具合目立つ
もっと簡単にゲーム作りたいならDarkGDK(.NET版)もある、有料だけど
暇あったら手を出そうかなんて思ったり
MDXも長いこと使ってたけど不具合目立つ
もっと簡単にゲーム作りたいならDarkGDK(.NET版)もある、有料だけど
暇あったら手を出そうかなんて思ったり
16名前は開発中のものです。
2010/02/03(水) 06:46:28ID:hKhRhaG2 おとといからslimSDKをいじくり回してたんだけど
俺の作りたいゲームが作れそうなメドがたったから
移行しようと思う これかなり良いよ
俺の作りたいゲームが作れそうなメドがたったから
移行しようと思う これかなり良いよ
2010/02/03(水) 21:24:28ID:y42hZeU6
良いんだけどDirectInputだけが糞なんだよなあ
2010/02/03(水) 23:32:46ID:g/HVJ6AF
>>17
基本的にMDXと同じ機能が使えるけど
JoyStick初期化のとき、ゲームパッド刺さっていないとエラーになったりするのが辛い
後バージョン上がる度にDirectInput部分だけクラス名・メソッド・プロパティ名が変わったりするから
少々困惑させられる、他はほとんど名前固定で変更ないのに
次のバージョンではもう変えないで欲しい
基本的にMDXと同じ機能が使えるけど
JoyStick初期化のとき、ゲームパッド刺さっていないとエラーになったりするのが辛い
後バージョン上がる度にDirectInput部分だけクラス名・メソッド・プロパティ名が変わったりするから
少々困惑させられる、他はほとんど名前固定で変更ないのに
次のバージョンではもう変えないで欲しい
2010/02/07(日) 13:43:07ID:NXDiksat
今月DirectX SDKの最新が出たんで近いうちSlimDXも対応版が出ると思う。
それでどうなってるかだねえ
それでどうなってるかだねえ
20名前は開発中のものです。
2010/02/09(火) 18:28:57ID:rOpCrrSS Direct3Dでは頂点の構造体すら用意されてないくらいなのに
SlimDX.DirectInput.SoccerOffenseControlsとか頭おかしいとしか思えない
どこがslimなのかと
SlimDX.DirectInput.SoccerOffenseControlsとか頭おかしいとしか思えない
どこがslimなのかと
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
つうかこのコラム一通りみれ
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
つうかこのコラム一通りみれ
22名前は開発中のものです。
2010/02/13(土) 10:24:19ID:mqqbM8pa 半透明処理の方法を教えてほしいっす
2010/02/13(土) 11:39:39ID:gk9dzd2/
Samples ソリューションの中の Direct3D9の Water の
WaterEntity.cs の59行目、
device.SetRenderState(RenderState.AlphaBlendEnable, true);
んで、67行目 末尾がfalseになっとるな?
アルファブレンドを有効にして、描画、アルファブレンド無効としてるわけだ
WaterEntity.cs の59行目、
device.SetRenderState(RenderState.AlphaBlendEnable, true);
んで、67行目 末尾がfalseになっとるな?
アルファブレンドを有効にして、描画、アルファブレンド無効としてるわけだ
2010/02/16(火) 06:28:27ID:lwpkWEcJ
ほんたまさんのスリムドカンのスレかと思った
25名前は開発中のものです。
2010/02/25(木) 19:31:57ID:F3d7kXlA PresentParameters.Windowed=falseからPresentParameters.Windowed=trueに切り替えると
ウィンドウが最大化されるのはなんで?
FormのLocationもSizeもWindowStateもFormBorderStyleもウィンドウ時と変わらないのに(なので当然サイズ変えても意味なし)
ウィンドウが最大化されるのはなんで?
FormのLocationもSizeもWindowStateもFormBorderStyleもウィンドウ時と変わらないのに(なので当然サイズ変えても意味なし)
2010/03/03(水) 19:09:28ID:kC+oOCRK
>>25
MDXの話で申し訳ないが、MDXならば勝手にTopMostとFormBorderStyleとClientSizeは変わってるよ。
多分ネイティブのDirectXがそうなってるんじゃないのか?
MDXの話で申し訳ないが、MDXならば勝手にTopMostとFormBorderStyleとClientSizeは変わってるよ。
多分ネイティブのDirectXがそうなってるんじゃないのか?
2010/03/09(火) 11:14:28ID:/qSOVn5X
Developer SDKだけDLすればDirectXSDKは不要ですか?
参照の追加にSlimDXだけ追加すれば使えそうに書いてあるけど
SDKもバージョンあわせなきゃいけないってのも>>1の日本語解説に書いてある
あとMicrosoft .NET Framework 2.0 SDK以降も必要?
32bitマシンだしD3D9以上のこと使わないなら不要でしょうか?
どちらも500M近くあって気が遠くなる・・・
参照の追加にSlimDXだけ追加すれば使えそうに書いてあるけど
SDKもバージョンあわせなきゃいけないってのも>>1の日本語解説に書いてある
あとMicrosoft .NET Framework 2.0 SDK以降も必要?
32bitマシンだしD3D9以上のこと使わないなら不要でしょうか?
どちらも500M近くあって気が遠くなる・・・
2010/03/09(火) 21:08:29ID:SHDHNGTO
.NET Framework SDKはVSExpressがあれば不要
DirectX SDKは必須ではないけどいずれサンプルを見るために確実に必要になる
C++のサンプルしかないけど読むくらいはできないときつい
DirectX SDKは必須ではないけどいずれサンプルを見るために確実に必要になる
C++のサンプルしかないけど読むくらいはできないときつい
2010/03/14(日) 09:10:06ID:Ob77Xb8B
これ使ったエロゲがでたな
2010/03/18(木) 19:02:29ID:sAIb3WQr
SampleにWPFを使う為のフレームワークあったのね
自分で作ったのより使いやすそうだわ
自分で作ったのより使いやすそうだわ
2010/03/21(日) 20:18:08ID:CzRwkR6A
>>27
SlimDXの再頒布パッケージは完全なDirectX再頒布パッケージを
収録してない嘘パッケージであることに注意。
インスコ直後のXPにこれ入れてもゲームは動かんぞ。
28の言うようにサンプルはC++で書かれているからそれを逐一C#に移植していくことになる。
SlimDXの再頒布パッケージは完全なDirectX再頒布パッケージを
収録してない嘘パッケージであることに注意。
インスコ直後のXPにこれ入れてもゲームは動かんぞ。
28の言うようにサンプルはC++で書かれているからそれを逐一C#に移植していくことになる。
2010/03/21(日) 20:21:40ID:CzRwkR6A
>>30
Direct3DでレンダリングかけてるというWPFとSlimDXの組み合わせは一番面白そうだよな。
Direct3DでレンダリングかけてるというWPFとSlimDXの組み合わせは一番面白そうだよな。
2010/03/21(日) 20:57:09ID:BNf6aD+I
実際には組み合わせられないのが残念
別々に動かしてサーフェス転送してるだけ
コントロールのウィンドウハンドル取れるWinFormsの方がまだ親和性は高い
別々に動かしてサーフェス転送してるだけ
コントロールのウィンドウハンドル取れるWinFormsの方がまだ親和性は高い
34名前は開発中のものです。
2010/05/14(金) 15:50:38ID:Agn9QNYG35名前は開発中のものです。
2010/10/09(土) 21:42:28ID:nr26u1G736名前は開発中のものです。
2010/10/23(土) 17:36:44ID:dH4nrlFp SlimDXでDirectX初めてやってるんだけどいいねコレ。
今はHLSLでシェーダを触り始めた辺り。
しかし、2Dゲーの為に苦労してるなぁ〜…って思うw
GPU! GPU! GPU!
今はHLSLでシェーダを触り始めた辺り。
しかし、2Dゲーの為に苦労してるなぁ〜…って思うw
GPU! GPU! GPU!
2010/10/23(土) 17:41:32ID:dH4nrlFp
俺が使いたいのはピクセルシェーダなんだよぅ、おぅ
2010/10/23(土) 19:02:57ID:NYvWtI7E
2005は対象外かよー
2010/10/23(土) 21:01:27ID:dH4nrlFp
ソースのコンパイルの話っすか
40名前は開発中のものです。
2010/10/24(日) 14:49:27ID:41k51lwY 頂点変換済みの板ポリをウィンドウのクライアント領域に描画して、
それをHLSLで弄るスケルトンがようやく完成したぜ… in D3D9
今度はピクセルシェーダでテスクチャにモザイクかけてみるよ(よ!)
GPU! GPU! GPU!
それをHLSLで弄るスケルトンがようやく完成したぜ… in D3D9
今度はピクセルシェーダでテスクチャにモザイクかけてみるよ(よ!)
GPU! GPU! GPU!
2010/10/24(日) 16:07:26ID:0z3YDA8C
そんなもんC++やXNAのサンプルでいくらでもあるじゃん
だいたいそのまま移植すればいいだけ
だいたいそのまま移植すればいいだけ
42名前は開発中のものです。
2010/10/24(日) 16:39:37ID:41k51lwY2010/10/24(日) 16:49:12ID:0z3YDA8C
2次元エフェクトならWindows Presentation Foundation Pixel Shader Effects Libraryがお勧め
一通りまとまっててWPF使わなくても参考になる
一通りまとまっててWPF使わなくても参考になる
2010/10/24(日) 17:13:50ID:41k51lwY
>>43 thx!
まさにそれ落として読んでましたw
サンプル動画も見たんですが、どう考えても宝の山ですww
ただHLSLの基本がまだまだなので理解力がヤバイですorz
ティーカップの人の本を買って熟読するしかないですね。
P.S.
SlimDXの2DゲームエンジンってGorgonってのしかなさそうですね。
まぁ、自分用の作るから別にいいんですが、参考にしてみようかと。
SDL.netのスプライト周りが面白かったんで、その変も参考にしたいですね。
つーかGorgonはWin7(x64)だと何故かインストールで弾かれるw
.Net3.5は最初から入ってる筈なのにインストーラーが馬鹿なのかな?
だからあれほどzipでくれと言ってるのに。
まさにそれ落として読んでましたw
サンプル動画も見たんですが、どう考えても宝の山ですww
ただHLSLの基本がまだまだなので理解力がヤバイですorz
ティーカップの人の本を買って熟読するしかないですね。
P.S.
SlimDXの2DゲームエンジンってGorgonってのしかなさそうですね。
まぁ、自分用の作るから別にいいんですが、参考にしてみようかと。
SDL.netのスプライト周りが面白かったんで、その変も参考にしたいですね。
つーかGorgonはWin7(x64)だと何故かインストールで弾かれるw
.Net3.5は最初から入ってる筈なのにインストーラーが馬鹿なのかな?
だからあれほどzipでくれと言ってるのに。
45名前は開発中のものです。
2010/11/13(土) 09:04:43ID:snFVsDxl TextLayoyt:SetDrawingEffect()に渡すIClientDrawingEffectの実装の仕方がさっぱりわからん
C#での実装の仕方を教えてほしい
C#での実装の仕方を教えてほしい
2010/11/13(土) 12:26:45ID:qup/FXee
DirectWrite使ったことないけど見てみたらComPointerに吹いた
COMのIDWriteTextRendererをC#のCOM相互運用で実装して返せばいいのかな
できなくはないんだろうけど俺には無理というかやりたくない
COMのIDWriteTextRendererをC#のCOM相互運用で実装して返せばいいのかな
できなくはないんだろうけど俺には無理というかやりたくない
2010/11/14(日) 13:07:09ID:VAytE0MM
TextLayoutでクラスを実体化させたあとGetDrawingEffect()で取り出せる。(嘘)
48名前は開発中のものです。
2010/12/15(水) 17:22:05ID:W0ff0zj1 visualstudio2010でslimdxsamplesのSimpleModel10をデバッグすると
DXGI_ERROR_UNSUPPORTEDって出て途中で止まるんだけど理由わかりますか?
DXGI_ERROR_UNSUPPORTEDって出て途中で止まるんだけど理由わかりますか?
2010/12/15(水) 17:31:36ID:D5FJhaCt
>>48
ハードウェアがサポートしてないから。
ただ、サポートしてないと言っても色々あって、
プログラムが必要としてない機能をデバイスに要求してて失敗してるだけなら、
それを外すことで他の部分は動かせるようになる。
ハードウェアがサポートしてないから。
ただ、サポートしてないと言っても色々あって、
プログラムが必要としてない機能をデバイスに要求してて失敗してるだけなら、
それを外すことで他の部分は動かせるようになる。
50名前は開発中のものです。
2010/12/15(水) 21:24:32ID:q2iTm1kx2010/12/18(土) 01:42:46ID:4XOJBpRQ
SlimDX使ってる人少ないなぁ。
やっぱりC#でDirectX使うのは少数派なんだろうな。
MicrosoftはなぜDirectXサポートを止めたのだろうか。
無理矢理XNAに引きずり込みたかったのだろうけど。
やっぱりC#でDirectX使うのは少数派なんだろうな。
MicrosoftはなぜDirectXサポートを止めたのだろうか。
無理矢理XNAに引きずり込みたかったのだろうけど。
2010/12/18(土) 09:57:31ID:JWorHuxc
DirectX生で使うような人の多くは速度やらGCやらでC#は避けるんだろうなぁ
あとドキュメントもほぼ全てC/C++向けに書かれてるし。
まぁ何だかんだ言ってC#の手軽さとXNAはよくあってると思う。
MSが作ってるだけあってよく作り込まれたフレームワークだし。
あとドキュメントもほぼ全てC/C++向けに書かれてるし。
まぁ何だかんだ言ってC#の手軽さとXNAはよくあってると思う。
MSが作ってるだけあってよく作り込まれたフレームワークだし。
2010/12/18(土) 11:43:06ID:NqdLgtTb
悪い意味で他にライバルが居ないんだよな
C++は別格としても、それ以外ではC#のほかに現実的な選択肢が無い
C++は別格としても、それ以外ではC#のほかに現実的な選択肢が無い
2010/12/18(土) 20:11:14ID:4XOJBpRQ
やっぱりC++が現実的だよね。
DX10以降になればWindows API Code Packが使えるのかな。
DX10以降になればWindows API Code Packが使えるのかな。
2010/12/18(土) 21:50:41ID:K2tyzowz
俺はアプリやゲーム自体はC++で作りたいんだけど
エディタとかは簡単にC#で作りたいんだよね
そこで困るんだよなぁ
DirectXを使用しないC#なんて描画が遅くて話にならないし
使うにしても現状XNAしか選択肢が無いけれどXBOXの仕様にひっぱられて
DirectX9までの中途半端な物しか使えない
やっぱりC#から普通にDirectXを呼び出せるManagedDirectXの存在は
必須だったと思うんだが、なぜ開発をやめてしまったのか・・・
だからSlimDXには超期待している
エディタとかは簡単にC#で作りたいんだよね
そこで困るんだよなぁ
DirectXを使用しないC#なんて描画が遅くて話にならないし
使うにしても現状XNAしか選択肢が無いけれどXBOXの仕様にひっぱられて
DirectX9までの中途半端な物しか使えない
やっぱりC#から普通にDirectXを呼び出せるManagedDirectXの存在は
必須だったと思うんだが、なぜ開発をやめてしまったのか・・・
だからSlimDXには超期待している
2010/12/18(土) 21:53:45ID:JWorHuxc
エディタなら配布のこともあまり考えなくて良いからSlimDXは良い選択だと思う
2010/12/18(土) 22:23:40ID:4XOJBpRQ
けどC#+SlimDXだと、DirectX+Net Framework+SlimDXが必要だからね。
SlimDxは添付できるし、DirectXもNet FrameworkもXP以降は最初から入って
いるけど、今の最新にする場合はやっぱりインスコ必要だし。
そこが一番面倒なとこ。
SlimDxはDirectXの薄いラッパーだから、変に集約してなくて使いやすいので
選択肢としてはいいとは思う。
SlimDxは添付できるし、DirectXもNet FrameworkもXP以降は最初から入って
いるけど、今の最新にする場合はやっぱりインスコ必要だし。
そこが一番面倒なとこ。
SlimDxはDirectXの薄いラッパーだから、変に集約してなくて使いやすいので
選択肢としてはいいとは思う。
2010/12/18(土) 22:56:19ID:5bWq6Od2
まあD言語とかの選択肢がないではないけどな。
WPFとの組み合わせが確立できるといいんだけどなぁ。
WPFとの組み合わせが確立できるといいんだけどなぁ。
2010/12/18(土) 23:58:01ID:4XOJBpRQ
WPFはゲームには使えないだろ。
ブラウザゲー程度かと。
D言語は昨日サイト見てたけど、言語仕様がガラパゴスな感じ
だったね
ブラウザゲー程度かと。
D言語は昨日サイト見てたけど、言語仕様がガラパゴスな感じ
だったね
2010/12/19(日) 09:49:54ID:+uUW/+wM
D言語って言語仕様だけ見ればかなり良い言語だと思うんだけど。
基本はC系だしガラパゴスな感じってのがよく分からん。
ただ、これでゲーム作るとなるとC#なんて目じゃ無いぐらいドキュメントが少ないっていう。
基本はC系だしガラパゴスな感じってのがよく分からん。
ただ、これでゲーム作るとなるとC#なんて目じゃ無いぐらいドキュメントが少ないっていう。
2010/12/19(日) 14:39:17ID:tZJ4XwZS
Dは互換性のない言語仕様変更をしょっちゅうやってるから実用言語としては話にならない
C#も言語仕様は拡張しまくってるけど、MSだから上位互換は絶対に保たれる
C#も言語仕様は拡張しまくってるけど、MSだから上位互換は絶対に保たれる
2010/12/19(日) 14:55:42ID:tl1Xfhrg
2010/12/19(日) 16:50:41ID:+uUW/+wM
なんかD言語スレ見たくなってしまったなw
2010/12/19(日) 17:15:07ID:tl1Xfhrg
あー、変な話降ってすまない。
元のSlimDXの話をどうぞ。
元のSlimDXの話をどうぞ。
2010/12/19(日) 19:59:21ID:oIwD3nP1
優越決まっても、別に最初から最後まで
それしか知らないそればかり使えない事は無い
ゲハ板の住人でもあるまいし
C言語わかってもDirectX SDKのDXUT読める奴はそう居ない
シェーダーとか使いこなせるようになるまでは
C#でもDでもいいんじゃないか
それしか知らないそればかり使えない事は無い
ゲハ板の住人でもあるまいし
C言語わかってもDirectX SDKのDXUT読める奴はそう居ない
シェーダーとか使いこなせるようになるまでは
C#でもDでもいいんじゃないか
2010/12/19(日) 20:34:24ID:+uUW/+wM
むしろシェーダーとか使うようになるまでが言語の差が出てくると思うんだが
3Dの基礎はどの言語でも変わらない訳だし
3Dの基礎はどの言語でも変わらない訳だし
2010/12/19(日) 21:34:42ID:oIwD3nP1
曖昧な書き方して、意味を取り違えられたかな?
CやC++で初めるのは良いよ
後々PIXを使えないと死ぬので、どのみちCヘッダーぐらい
読め無いと生き残れない
だけど、DXUTをガチで相手したら駄目
Cがこういう糞言語という訳でない
CやC++で初めるのは良いよ
後々PIXを使えないと死ぬので、どのみちCヘッダーぐらい
読め無いと生き残れない
だけど、DXUTをガチで相手したら駄目
Cがこういう糞言語という訳でない
2010/12/19(日) 22:36:29ID:EYwGO04p
DXUTはそれ自体が大規模化しちゃって、
DirectX(3D)の使い方を調べるのはやや不向きになっちゃってるのが残念だよね。
その点はSlimDXのサンプルのほうが簡潔で分かりやすい。
そいや、C#でプリミティブのVertexBuffer用のデータを作成するのって
皆はどうやってる?
やっぱりstructを定義して1個ずつインスタンスを初期化していくんですかね。
この部分、ジェネリックがうまいこと動かずにすごく苦労する。
DirectX(3D)の使い方を調べるのはやや不向きになっちゃってるのが残念だよね。
その点はSlimDXのサンプルのほうが簡潔で分かりやすい。
そいや、C#でプリミティブのVertexBuffer用のデータを作成するのって
皆はどうやってる?
やっぱりstructを定義して1個ずつインスタンスを初期化していくんですかね。
この部分、ジェネリックがうまいこと動かずにすごく苦労する。
2010/12/19(日) 22:48:47ID:2VEpyIA3
unsafeでポインタ使いまくり
SlimDXなんか使ってる時点で安全性なんか関係ない
SlimDXなんか使ってる時点で安全性なんか関係ない
2010/12/20(月) 22:37:09ID:YK+Rc81C
ポインタ使いまくりなら最初からC++でやればいい気がするが?
2010/12/20(月) 23:00:57ID:Ml895Bvs
なんでそういう極論になるかな。
速度的にクリティカルなところとか、どうしても低レベルな処理をしたいところはあるだろ。
そういう箇所って言うのは一般にはほんの一部なんで、
そこのためだけに面倒なC++を使う必要がないのは大きなメリット。
速度的にクリティカルなところとか、どうしても低レベルな処理をしたいところはあるだろ。
そういう箇所って言うのは一般にはほんの一部なんで、
そこのためだけに面倒なC++を使う必要がないのは大きなメリット。
2010/12/21(火) 00:32:03ID:N/+0RCBN
ところで結構作り進めて今更気がついた。
DirectX9でのロスト対策がどうしようもないんだけどどうすればいい?
Device.Resetかけた時点でInvalidCallを吐き出して進まん・・・
DirectX9でのロスト対策がどうしようもないんだけどどうすればいい?
Device.Resetかけた時点でInvalidCallを吐き出して進まん・・・
2010/12/21(火) 01:17:54ID:FsRX6CKW
2010/12/21(火) 05:58:42ID:UFi6vgUK
わからん。専用のstruct定義して配列流しこむ以外に何かあるの?
もしかしてC++でいうTMPとか駆使してFVFや頂点宣言を自動で解決したいとかいう話?
もしかしてC++でいうTMPとか駆使してFVFや頂点宣言を自動で解決したいとかいう話?
2010/12/21(火) 08:52:18ID:FsRX6CKW
>>74
MemoryStreamにバイト単位で書き込んでいく方法もある。
どうもこのあたりの部分をジェネリックでうまく一般化出来ないんだよね。
C#相談室あたりで質問したけど無理、という結論になったことが。
MemoryStreamにバイト単位で書き込んでいく方法もある。
どうもこのあたりの部分をジェネリックでうまく一般化出来ないんだよね。
C#相談室あたりで質問したけど無理、という結論になったことが。
76名前は開発中のものです。
2010/12/21(火) 10:07:33ID:IUyb5141 なんだコイツ?
会話する気が無いのか?
VertexBufferの作成やSetFVFが簡単にできる
C++の構文で、C#にはできないのはな〜だ?
ってwなぞなぞかよw
聞きかじった知識があるだけで、何も理解してない
だろコレ
会話する気が無いのか?
VertexBufferの作成やSetFVFが簡単にできる
C++の構文で、C#にはできないのはな〜だ?
ってwなぞなぞかよw
聞きかじった知識があるだけで、何も理解してない
だろコレ
2010/12/21(火) 11:45:06ID:FsRX6CKW
>>76
書かれてるレスをなぞなぞ呼ばわりしてるんだったら、
理解してないのはお前じゃないか。
SlimDXはC#でDirectXを扱えるようになる便利なライブラリだが、
VertexBufferのフォーマットを色々と弄りたい時に
C#の文法上の制限から扱いにくい場合があるという話をしているだけ。
書かれてるレスをなぞなぞ呼ばわりしてるんだったら、
理解してないのはお前じゃないか。
SlimDXはC#でDirectXを扱えるようになる便利なライブラリだが、
VertexBufferのフォーマットを色々と弄りたい時に
C#の文法上の制限から扱いにくい場合があるという話をしているだけ。
2010/12/21(火) 11:59:41ID:IUyb5141
じゃあ、C++文法上だとどんな書き方ができる?
2010/12/21(火) 13:40:09ID:589aNUur
頂点扱うメソッドやクラスはなんでもかんでも<TVertex>と書きたいということ?
インターフェイス使って
interface IPosition3D { Vector3 Position3D { get; set; } }
interface ITexCoord2D { Vector2 TexCoord2D { get; set; } }
where TVertex : struct, IPosition3D, ITexCoord2D みたいな感じで可能
構造体の場合は実行時に特殊化されるのでインターフェイス経由のメンバアクセスでもボックス化は発生しないけど
プロパティ経由だからインライン展開されたとしてもコピーは消えないのでどうしても遅くなるのは仕方ない
MemoryStreamとか使っていい程度なんだったら別に問題にはならんでしょ
インターフェイス使って
interface IPosition3D { Vector3 Position3D { get; set; } }
interface ITexCoord2D { Vector2 TexCoord2D { get; set; } }
where TVertex : struct, IPosition3D, ITexCoord2D みたいな感じで可能
構造体の場合は実行時に特殊化されるのでインターフェイス経由のメンバアクセスでもボックス化は発生しないけど
プロパティ経由だからインライン展開されたとしてもコピーは消えないのでどうしても遅くなるのは仕方ない
MemoryStreamとか使っていい程度なんだったら別に問題にはならんでしょ
80名前は開発中のものです。
2010/12/21(火) 14:33:36ID: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();
}
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();
}
2010/12/21(火) 15:10:37ID:FsRX6CKW
2010/12/21(火) 16:03:41ID:589aNUur
それだったら別にリフレクションなんか使わなくても
VertexElement[]を返すプロパティを宣言したインターフェイスをHOGEVertexに実装させて
whereで要求すればいいだけじゃないの?
VertexElement[]を返すプロパティを宣言したインターフェイスをHOGEVertexに実装させて
whereで要求すればいいだけじゃないの?
2010/12/21(火) 16:08:34ID:IUyb5141
それC++でやってたソースみた事あんのか?
なんだかな
C++もC#も知らない
その自分が未熟なことも知らない
しまいには人を見下すだけで会話もできない
なんだかな
C++もC#も知らない
その自分が未熟なことも知らない
しまいには人を見下すだけで会話もできない
2010/12/21(火) 16:10:35ID:IUyb5141
>>82
うん 俺もこんなの使って無い
うん 俺もこんなの使って無い
8582
2010/12/21(火) 16:15:24ID:589aNUur 直接関係ないけどGetCustomAttributesがフィールドの宣言順に返ってくる保証は無いよ。
順番が保証されてるフィールド情報の列挙方法はリフレクションAPIには無いので、
VertexElement属性には明示的にインデックスを付ける必要がある。
どうせリフレクション使うんだったら、staticプロパティとしてVertexElement[]を返すプロパティを定義してしまって
そっちに属性を付けた方がいいかもしれない。
順番が保証されてるフィールド情報の列挙方法はリフレクションAPIには無いので、
VertexElement属性には明示的にインデックスを付ける必要がある。
どうせリフレクション使うんだったら、staticプロパティとしてVertexElement[]を返すプロパティを定義してしまって
そっちに属性を付けた方がいいかもしれない。
2010/12/21(火) 17:09:39ID:IUyb5141
>>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するとか)
。
ゲームのメインループ外に処理にできないと設計の意味が無い。
>宣言順に返ってくる保証は無いよ
本番では使って無くてよかった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するとか)
。
ゲームのメインループ外に処理にできないと設計の意味が無い。
2010/12/21(火) 18:38:36ID:Xai41NPW
インターフェイスのstaticメンバはサポートされてないので
staticフィールドを返すインスタンスメンバとして実装してdefault(T).GetDeclaration()かな
staticフィールドを返すインスタンスメンバとして実装してdefault(T).GetDeclaration()かな
2010/12/21(火) 20:51:48ID:N/+0RCBN
2010/12/21(火) 23:09:44ID:IUyb5141
>>87
ゴメンtypo
× T.GetDeclaration() //コンパイルできません
○ T_array[0].GetDeclaration() //こんなもんかな
それから型パラメータは TVertex とかにしないとスゲー読みづらい
ゴメンtypo
× T.GetDeclaration() //コンパイルできません
○ T_array[0].GetDeclaration() //こんなもんかな
それから型パラメータは TVertex とかにしないとスゲー読みづらい
2010/12/21(火) 23:25:18ID:Xai41NPW
いやdefault(T).GetDeclaration()のほうがいい
構造体なのでdefault(T)でインスタンスが作れる
構造体なのでdefault(T)でインスタンスが作れる
2010/12/21(火) 23:36:17ID:Xai41NPW
それと、リフレクション使うならこういうふうにシングルトンでキャッシュするのがいいよ
class VertexInfo<TVertex> {
public static readonly VertexInfo<TVertex> Instance = new VertexInfo<TVertex>();
public VertexElement[] Format { get; set; }
private VertexInfo() { /*ここでリフレクション使ってFormatを初期化*/ }
}
class VertexInfo<TVertex> {
public static readonly VertexInfo<TVertex> Instance = new VertexInfo<TVertex>();
public VertexElement[] Format { get; set; }
private VertexInfo() { /*ここでリフレクション使ってFormatを初期化*/ }
}
2011/01/23(日) 21:16:58ID:v5GChX7G
俺MDXから入った身なんだけど、Spriteでの拡大とか回転に悩んでるんだが。
SlimDXでのDirectX9オンリーで作りたいんだけど、MDXで作ってた時みたいにSprite.Draw2DでやろうとしてもDX10/11にしか無いんだよね。
要するにSlimDXでSpriteの拡大とか回転ってどうやんの?
本家DirectXの知識は殆ど無い。
SlimDXでのDirectX9オンリーで作りたいんだけど、MDXで作ってた時みたいにSprite.Draw2DでやろうとしてもDX10/11にしか無いんだよね。
要するにSlimDXでSpriteの拡大とか回転ってどうやんの?
本家DirectXの知識は殆ど無い。
2011/01/23(日) 21:28:14ID:IvAtt79g
Transformに変換行列入れる
ネイティブのD3DXのラッパーっていうのはなんか気持ち悪いからSpriteは自作してるなあ
ネイティブのD3DXのラッパーっていうのはなんか気持ち悪いからSpriteは自作してるなあ
2011/01/23(日) 22:19:47ID:v5GChX7G
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 🇺🇸🇨🇳米中関係は「極めて強固」とトランプ氏… ★5 [BFU★]
- SuicaとPASMOのコード決済「teppay(テッペイ)」26年秋開始 🐧🤖 [少考さん★]
- 🇺🇸🇨🇳米中関係は「極めて強固」とトランプ氏… ★6 [BFU★]
- 【SNSでも政策の無駄募る】政府が新設 政策の財源探し 税制優遇など「見直し担当室」… [BFU★]
- 「ホストに貢ぎたい」と海外で売春する日本人女性 2カ月で2千万円稼ぐケースも [1ゲットロボ★]
- 【速報】外務次官が中国大使と面会 [蚤の市★]
- 山上母「統一教会に献金をしたことで兄も天国で幸せに暮らすことになった」 [268244553]
- みろ、
- 【♩悲報】NHK立花たかし、実刑へ。数年間ブタ箱。自殺した兵庫県議へ中傷で [732289945]
- 参政党・さや議員「日本ではデフォルトは起きません!なぜなら日本円はいくらでも刷れるからです!!!」 [931948549]
- 【超絶悲報】玉川徹、安倍さんを否定する反日売国奴。「アベノミクスで国力が下がったところで、またアベノミクスをやろうとしてる」 [519511584]
- 高市、国連の全ての加盟国に「私悪くないもん」という趣旨の迷惑メールを送付 [931948549]
