【C#】 Managed DirectX 【.NET】
3 :
名前は開発中のものです。:2007/11/15(木) 23:29:27 ID:TN3OsQDp
XNAとどう違うのん?
無いと思っていたら、よくぞ立ててくれたな。
だがわだいはまだない
個人で書かれたドキュメントもあんまりないんだよな。
知名度自体無さそうだ
C#(笑
C#は別に問題無いだろ。
今時、C#はねーわ。
C#よりも今時のゲーム製作に適した言語ってなに?
C++/CLIか?使ったこと無いけど。
ファビョりすぎてワロス。一生気付かなくていいよ。
12 :
名前は開発中のものです。:2007/11/25(日) 21:04:51 ID:hEqezQI1
C++と比べてC#はどんくらい遅いの?
13 :
名前は開発中のものです。:2007/11/25(日) 21:08:33 ID:OiLlykW8
0.9倍くらい
0.9倍遅いということは1.11111…速いということになるが、お前の頭は大丈夫か?
C#で開発してるけど、コードが書きやすくて個人的には楽。
16 :
名前は開発中のものです。:2007/11/26(月) 20:40:20 ID:ZRVyv466
c++で作ってたら
あまりの手間に「俺、なんでこんなことやってるんだろう」ってむなしさをかんじ
C#に戻りました
DXSDKの2007年11月号には付録のマネージドサンプルが付いてないから注意だ!
床ポリゴンの任意のXZ座標に於けるY座標やポリゴンの角度を知りたいのだけど、どうすればいいのだろう。
面白そう!
英語わかんないけどサンプルやってみるぜ
とりあえず最新(Nov 2007)のDirectXじゃないと動かないみたいね
使ってみたんだけど深いことやらないから今までと何も変わらないなw
黒歴史
kwsk
質問というかなんと言うか。
事の始めは30fpsの場合なら描画に関するメソッドをふっ飛ばせばいいやと記述したところから気づいたのですが。
通常の2サーフェイス、垂直同期した設定のデバイスで全体のwhileループ毎に1回Presentします。
このループ内で、2回に1回だけClear、BeginScene、(色々)、EndSceneの一連の描画メソッド群を呼ぶよう記述したところ、
フルスクリーンでは画面が点滅したのに対し、ウィンドウではしっかりと表示されました。
フルスクリーンで起きたことを疑問に思いフリップなどの原理を読んだところ、むしろウィンドウモードで起きていることが変なのだとわかりました。
ウィンドウモードでは何が起きているのでしょうか?
>>17 これはどうしてなんだろう
MicrosoftがC#を見限ったのかと思ったぞ
C#はともかくMDXはとっくに見限られてるぞ
今は有志が.NETからDirectXを使えるようにラッピングしてるSlimDXがいいのかな?
SlimDXいいよ
こんなのが欲しかった
いつだったかMS社員のブログでもちょっとだけ紹介されてたな
30 :
名前は開発中のものです。:2008/01/30(水) 21:45:52 ID:iUjGqxVR
3dCGツールみたいなのを簡単に作れるかと思って
C#で作ってるんだけど、画面自体はpictureboxに描いて
操作はボタンとかtabとかで選ぶようにしたんだが
pictureboxにレンダリングするとボタンとかの表示が更新されない
どうやってすればいいの?
普通に作ったらそんなことにはならない
そうなのか、でも何とかできたよ。ありがと
Mesh.Intersectを使ってIntersectInformationに情報を得たのだが、これを使って三角形の各頂点の座標とかわかるのかな。
FaceIndexを使えばなんとかなりそうな気もしたけど、調べても使い方がよくわからない。
34 :
名前は開発中のものです。:2008/01/31(木) 22:28:59 ID:rtDfFv3X
>3dCGツールみたいなのを簡単に作れるかと思って
この無謀さがたまらんわ。 このまま突き抜けて欲しい。
35 :
名前は開発中のものです。:2008/02/03(日) 18:15:34 ID:FshDN9yL
3dcgツールって独自規格なのか
36 :
名前は開発中のものです。:2008/02/11(月) 09:09:17 ID:4x3go5rA
もっと基本的なC#で2D製作のスレはありませんか?
もしくはC#でゲーム製作に必要なウェブページとか書籍とか紹介していただけませんか?
スレ違いかもしれませんが、よろしくお願いいたします
マイナーな道だという自覚を持つべき
C++は読めないとしんどい
>>36 うちも四角形専門で、最近C#+MDXに手を出したんですが
結局は SDK に付属のサンプルフレームワークを読み解くのがベストでした。
四角形専門カコイイ
VisualStudio2008でMDX使える?
切捨てでxnaとかに移行するの?
>40
使える
xnaはあれはあれで癖があるのでケース倍ケース
IME系弄ろうとしたらしんどかった>xna
42 :
名前は開発中のものです。:2008/02/29(金) 19:25:31 ID:0VghpvKE
MDXでやるくらいならJAVA3Dの方がマシ
さすがにVector型使うのにGCを気にしたくないわ
44 :
43:2008/02/29(金) 19:42:20 ID:wecGO7bd
誤解されそうなので補足
コレクションじゃなくてベクトル型のことだよもちろん
C#ではスタックに積まれることが想定できるStructな構造体なんだっけ?
Structなっていうか、
静的な構造体だ・・・
47 :
名前は開発中のものです。:2008/03/19(水) 16:26:58 ID:Ec0sfVVS
C#コード書きやすいよね。
俺は同じシューティングゲームをHSP→C++→C#で作ったけど、
美しさで言えばC#が一番上だね。まぁC++でもコーディングが
悪かっただけかもしれないが…。でもC++のテンプレート機能
は使えるな。同じ機能のクラスを重複して書く必要ないし。
C#はそこをなんとかジェネリックで解決してくれればなぁ。
まぁクラスの複数継承ができればもっといいが…
あれってなんでできないんだろ?しないだけなのか?
多重継承は問題が多いから捨てた
C#3.0では拡張メソッド使ってそれっぽいことできるよ
基本的にインターフェースで解決しろ、って姿勢だからな
ベクトルが若干違うが、デリゲートって方法も一応あり
てか、多重継承って使ったことないんだが、あれってどう必要なの?
現状のインタフェースへの不満といえば、
・インタフェースに対して基本的な実装クラスが一つしかない場合、
委譲メソッドを長々と書くのが面倒。見る価値の無いコードが増える。
・クラスとインタフェースが別の定義と分かれているせいで、
やろうと思わなければインタフェース化されないことが多く、
既にライブラリ化されたクラス等を継承して拡張したい場合に
インタフェースが提供されておらず拡張出来ないことが多い。
だからさ俺は、クラス定義のメンバ毎にinterface修飾子を
付与出来るようにすれば、クラスとインタフェースを同時に考えるようになって良いと思うわけよ。
んで使う側ではJavaのようにextendsとimplementsで分けてだな、
同じクラス名から、クラス継承とインタフェース継承を自動的に分離して解釈するわけ。
こうすりゃインタフェース名の先頭につけるIとかもなくなってスッキリだろ。
個人的にはインターフェース好きなんだけどなぁ・・・
なんつーかインターフェースの場合は継承と違って、これ絶対多態性使うかんな!っていう意気ごみがある。
I○○って言う型の変数があれば、絶対何かを管理していると言うかなんと言うか。そういう安心感。
interfaceは実装を持てないから
結局、まったく同じ処理なのにプロパティやメソッドの本体を各所に書く必要がある。
実装を持たないことに意味があるんだろ
多重継承最強と
使い手によるわな
見る価値のないコードが増えるぐらいどーって事もないが
見る価値のないソースを作っているほうが大問題
見る価値のないコード ⊆ 見る価値のないソース
Cutting Edge DX9のアニメーションメッシュを参考にコード書いてるんだけど、
末端のフレームに兄弟フレームがあった場合どうなるん?
すまん勘違いだった。
60 :
名前は開発中のものです。:2008/03/26(水) 02:41:53 ID:5YA6TDpT
>interfaceは実装を持てないから
>結局、まったく同じ処理なのにプロパティやメソッドの本体を各所に書く必要がある。
同意。
複数継承できないことの解決になってない。
61 :
名前は開発中のものです。:2008/03/26(水) 11:48:39 ID:Na6PWth9
まて、変数メンバとして基本クラスにしたかったクラスのインスタンスを持つのじゃ無理な話なのかそれ
それに3.0なら拡張メソッドとか言うびっくりな文法も存在するからそこら辺で代用できるでしょ。
あばばば、あげてしまった
static class Hogeable {
public interface IHogeable { Hogeable.HogeableObject HogeableObject { get; } }
public class HogeableObject { public int Value { get; set; } }
public static void Hoge(this IHogeable hoge) {
hoge.HogeableObject.Value += 1;
Console.WriteLine(hoge.HogeableObject.Value);
}
}
class MyClass : MyBaseClass, Hogeable.IHogeable {
private Hogeable.HogeableObject hogeableObject = new Hogeable.HogeableObject();
Hogeable.HogeableObject Hogeable.IHogeable.HogeableObject { get { return hogeableObject; } }
}
//MyClass obj = new MyClass(); for (i=0;i<10;i++)obj.Hoge();
こうすればインスタンスフィールドも持てるんじゃね
流石に面倒すぎやしないかw
まあusing2つ追加すればHogeableは消せるから使用側は割と楽だけど。
65 :
名前は開発中のものです。:2008/03/27(木) 02:42:43 ID:1iqAdxC6
あれ、結局何がしたいんだ?
MyClassにフィールド追加してるんだったら
直接持ちたい機能を持ってるクラスをフィールドに追加
すればいい話でしょ。
拡張メソッドとか使用したところでオブジェクト生成して
使う側には便利だけど継承側はthisで参照できないからメリットないし
66 :
65=60=47:2008/03/27(木) 09:54:55 ID:/nFHNp1Z
>>63 それを避けたいから複数継承したいだけだよ
67 :
66:2008/03/27(木) 09:56:00 ID:/nFHNp1Z
>>63はただの冗談だよw
なんでそんなに継承したいの?
わざわざインターフェイス実装しなくても包含してプロパティで公開すれば済む話でしょ
ところで,thisで拡張メソッドは呼び出せるよ(thisを付けなければ呼び出せない)
69 :
68:2008/03/27(木) 23:31:23 ID:d3W1Wa7a
冗談てw
ただ単にプロパティとか書かなくていいから継承したい
てか継承したいのはインターフェイスとは言ってないのだが
インターフェイスなら意味ないからクラスを複数継承したいと
あ、呼び出せるんだ。じゃあ便利だね
70 :
名前は開発中のものです。:2008/06/09(月) 11:07:44 ID:hPaVQxMn
71 :
名前は開発中のものです。:2008/07/07(月) 17:38:43 ID:tUV9S/d8
シャドウマップ用にテクスチャをつくりたいのですが
CreateTextureのような関数はないのでしょうか?
72 :
71:2008/07/07(月) 18:39:04 ID:tUV9S/d8
自己解決しました
vista bus spなし .NET3.5
DirectXのSDKを複数入れてたんだが、
整理目的でアンインストールしたらManaged DirectX使ったプログラムが動かなくなっちゃった
DLLなくなってないし、コンパイル通るのにな・・・
74 :
名前は開発中のものです。:2008/07/27(日) 23:06:43 ID:6A71A0KI
米国時間23日、マイクロソフトは統合3Dソフト「trueSpace 7.6」の無償提供を開始した。
最新バージョンの7.6では、マイクロソフトが提供する地図検索サービス「Virtual Earth」へ、
3Dモデルを直接書き出す機能が追加されている。Googleが「Google Earth」向けに3D CAD
ソフト会社である@Last Software社を買収し、3Dモデリングソフト「Google SketchUp」を無償
公開したことに対抗する目的と思われる。
trueSpaceは、モデリング、アニメーション、レンダリングと、放送およびポストプロダクション分野まで
カバーする統合3Dソフトウェア。trueSpaceは、モデリング特化型のSketchUpとは違い、3ds Maxや
LightWave 3Dなどと競合する製品を無償化したものであり、機能が豊富な分、操作性はやや難しい
ものとなっている。開発はマイクロソフトが2008年2月に買収した米Caligari社が行う。
この無償化は「Virtual Earth」の普及を主目的としているようだが、標準でDirectX9及びXNA
Frameworkにおける3Dデータの標準形式である「Xファイル」での出力に対応しており、trueSpaceで
作成したモデルデータ及びアニメーションデータはXNA Game Studioなどから直接利用することが
可能である。また、ポストプロダクション向けということもあり、非常に高品質なプリレンダリング動画の
出力なども可能である。
XNA Game Studioで作成されたXbox360用の同人ソフト販売サービスも発表されていたが、同人分野
では1本数十万円という価格帯が一般的な統合3Dソフトの導入が難点であった。このtrueSpaceの
無償提供で、XNA関連分野の一層の活性化が期待される。
http://news4xbox.blogspot.com/2008/07/3dtruespace-76.html
>>73 MDXランタイムだけで動作するはずだから、9.0c2006April以降を試しに入れなおしてみたら?
76 :
73:2008/07/29(火) 01:41:37 ID:m9T5+D5J
>>75 サンクス
2006AprilのSDK入れたらちゃんと動作してくれた
どうやらアンインストール時にランタイム関連まで削除してしまったようだ
77 :
名前は開発中のものです。:2008/09/04(木) 19:00:51 ID:mkD4gvDF
ソース記事から見ていつもマルチ乙なゲハ厨さんか
死ね
氏ねじゃなく死ね
過疎ってるの?死ぬの?
81 :
名前は開発中のものです。:2009/07/11(土) 20:39:51 ID:Za3/AWBN
class InputManager
{
private int pushed_tick = 0;
private Device DInDev;
#region
public void init()
{
DInDev = new Device(SystemGuid.Keyboard);
DInDev.Acquire();
}
public ButtonType KeyDown
{
get
{
//入力してから一定時間の間入力受け付けない(単位:ms)
if (System.Environment.TickCount - pushed_tick < 60) return ButtonType.NONE;
pushed_tick = System.Environment.TickCount;
KeyboardState state = DInDev.GetCurrentKeyboardState();
:
}
}
#endregion
}
init()を実行すると「DLL 'C:\Windows\assembly\GAC\Microsoft.DirectX\1.0.2902.0__31bf3856ad364e35\Microsoft.DirectX.dll' は、OS ローダー ロック内でマネージ実行を試行しています。
DllMain またはイメージ初期化関数内でマネージ コードを実行しないでください。この動作は、アプリケーションをハングさせる原因になる可能性があります。」という例外が吐かれる。これを解決する方法はない?
x64環境?
83 :
名前は開発中のものです。:2009/07/12(日) 23:08:08 ID:Pm94PkQG
>>82 x86環境だが・・・
解決した。
DirectXを参照に追加するのを忘れたのが原因だった。
スレを汚して済まん
それでコンパイル通るのか・・・
64bitOSだと、AnyCPUでそういうエラー出るけどな
85 :
名前は開発中のものです。:2009/09/17(木) 14:17:20 ID:0Wzq8kp1
なんたる閑散ぶりっつ。
XNAには人居るのか・・・?
MDXよりはマシ
XNAが嫌ならSlimDX池
助言に従いslimdxに行ったけど、サンプルの大半が動かん。
それも初期化部分で。orz
d3dx9のほとんどのバージョンのdll入っているんだけどなあ。
具体的にバージョンとか試したサンプルとかはどれ?
もし64bitOSならAnyCPUだとまずいケースが多いよ。
とりあえずx86に統一してしまうのがいいかも
とりあえず
August 2009のDirectX SDKとSlimDX SDK を入れて試してみてよ。
弄ってなけりゃ32/64あまり気にせず動くと思うよ
おわ!即レスしてくれてたのね 気づかんかったorz
改めて トントン
明日 再チャレンジしてみるよ
試したけど、ダメだった。
xp32bit sp3 /directx August 2009 /slimdx 最新版。
試したサンプルはslimdxに付いてくる奴。
ChangeDevice で D3DERR_NOTAVAILABLE: Not available 。
日本語に翻訳されてる方のページ見るとバージョンが違う場合に出やすいようだけど、
もうまんどくさい。orz
opentkとかでopenglに流れます。
あ、そうそうディスプレイカードはnvidiaの7900gt系だと思う。
ありがとうございました。w
すまない。原因がわかった。
maxvistaっていう日本ではもうメンテナンスされていないソフトを使って
ノートパソコンをセカンドディスプレイに使用しているのが原因だった。
さてさて、0番目のディスプレイのみ使用とすると動くようになるのか
そもそも、そのようにするにはどう書けばいいのか
初心者には敷居が高い。orz
なるほど、動くやつはDirect3D9の中だとMiniTriくらいかな?
SampleFramework使ってるやつはDeviceSettingsあたりいじるといいのかなあ
つうか別にSampleFramework使わなくてもいいのでは?
しかしSlimDXはやっぱり知名度は低いね。
ぐぐっても試してみたとかそんなブログ記事は見つかるのだが。
世の中に腐るほどある非公式DirectXラッパーの中でこんだけ知られてりゃ上等だろ
こんだけ知られてりゃ上等だろ
こんだけ知られてりゃ上等だろ
こんだけ知られてりゃ上等だろ
>>97 そう言われればそうなんだけどね。
まあ自分で試しなさいってことだな。
100 :
名前は開発中のものです。:2009/12/25(金) 22:05:17 ID:iAJUgTtp
DirectSoundで、セカンダリバッファをファイルからじゃなく、
リソースからは読み込み出来ないみたいだね。MDX1.1
たしか出来るけど、渡す値が通常の画像とかと違ったきがする。
public static Stream GetStreamFromManager(string filePath, ResourceManager manager)
{
string name = Path.GetFileNameWithoutExtension(filePath);
string extension = Path.GetExtension(filePath);
if (extension.Equals(".wav", StringComparison.OrdinalIgnoreCase))
{
return manager.GetStream(name);
}
return new MemoryStream((byte[])manager.GetObject(name));
}
参考に。vsのリソースマネージャに管理されてるリソースをStreamにして返す関数。
PathはSystem.IO、ResourceManagerはSystem.Resources名前空間のやつ。
vsのリソースマネージャはプロジェクト名.Properties.Resourcesクラスから取得可能。
元のファイル名が空白文字を含んでたりすると無効だが、こっからStream経由で読み込めばセカンダリバッファもok。
103 :
名前は開発中のものです。:2010/02/15(月) 17:06:53 ID:gHiYAuKa
C#+MDXで開発してる者です。
DirectInputのジョイスティックを振動させる方法で行き詰ってます。
設定ファイルを読み込んで振動させる?方法と
二つある軸をそれぞれ設定?して振動させる方法があるようなんですが
日本語でわかりやすいサンプル掲載してるサイトなどご存じないでしょうか?
意を決してくされMSDNに行ってみましたが、
チュートリアルのリンクが切れてたりで役に立ちませんでした
MDXもうやめてはどうか。
というのは置いといて、もともとMDX特有というのはないので
他の環境でのやり方調べてMDXに応用しては?
資料少ないけどそれで何とかなると思うよ。
>>103 てか公式に日本語ドキュメント存在するぞ。2004年版だが十分わかる。
107 :
名前は開発中のものです。:2010/05/15(土) 16:55:28 ID:I6IHCiYE
開発環境VisualStudio2008EE
MDXにて、
Microsoft.DirectX.DirectInput
で入力を取るプログラムを作成したのですが、
構成マネージャReleaseビルドに変更して、ビルドし、他のPCで実行しようとすると、
動作を停止しました となり落ちてしまいます。
これはどのようなことが原因として挙げられるでしょうか?
試してみた項目
・ホスティングプロセスを無効
・.net Frameworkのバージョンを変更
・VisualStudio2010でReleaseビルド
いずれも駄目でした
108 :
107:2010/05/15(土) 16:57:12 ID:I6IHCiYE
実行する側にも対応した.netflameworkがインストールされていることを
確認しております
DirectXが入っていなかったりして・・・
110 :
107:2010/05/15(土) 17:58:24 ID:I6IHCiYE
>>109 レス感謝します!
Microsoft DirectX SDK (February 2010)
がインストールされていることを確認しています
111 :
107:2010/05/15(土) 18:08:53 ID:I6IHCiYE
MDXのバージョン類についても調べたところ
・1.0で、もう廃れたものらしい
・あれこれ追加でインストールを要求するソフトというのもまずい
C++でいじることにします。
できたらフォームで簡単にキーコンフィグとか楽だったのですが・・
ありがとうございました
SlimDXでいいじゃない
何を使おうが自由。信者の布教活動は他所でやれ
>>111を見たら誰でもそういうと思うけどな
別に布教とかじゃねーよ。俺が主に使うのはXNAだし
115 :
名前は開発中のものです。:2010/07/07(水) 06:10:37 ID:j4uaeT6M
116 :
名前は開発中のものです。:2012/07/26(木) 23:01:25.68 ID:KSmi4eDd
つか、もうさ、DirectXは終わりだから辞めた方がいいよ
Directx10とか11ってもうホビーユース完全にあきらめたでしょ
Directxは9まで。よって、消えゆく技術
つかWindows8時代のC#とかDirectX、XNAってどうなるの?
教えてエロい人!
もう語らないのか
チラッ
(今更だがMDXに手を付けてみようとしてる)
長年 .NET2.0 で使ってたけどプロファイルを .NET4.0 に変更したら動かなかったよ