C♯で3Dゲームat GAMEDEV
C♯で3Dゲーム - 暇つぶし2ch214:名前は開発中のものです。
07/10/06 01:22:16 ZutdyDT9
>>213
初耳。最新のMDXもシェーダがある程度対応してるGPUじゃないともっさりすると思うけどね。

>>212
こんだけマンセーしてる割に知識がなくてすいません。
原則として、多少楽になっているものの、大抵は普通のDirectXと同じです。

フルスクリーン切替や、フルスクリーン時の外部からの割り込みでグラフィックデバイスがロストするのは仕様です。
ただし、適切なリセットを行えば再構築されるはずです。(通常のDirectXでもそうでは?)
少なくともスプライトは特に何も問題は発生しません。

文字描画も普通のDirectXと大差はありません。Fontクラスをインスタンス化すれば、
その後はDrawTextで描画できます。
ただし試してません。今はちょっと込み合ってるので日曜まで待ってorz

・・・質問に対する答えになってるか不安だぜ・・・。



215:211のつづき
07/10/06 01:25:56 ZutdyDT9
開発環境まとめ

・.NET Framework 1.1 (C#1.1、MDX1.1の機能を使用するに必要)
・.NET Framework 2.0 (C#2.0の機能を使用するの必要)
・VisualStudio 2005 C# Express Edition (総合開発環境。かなり重い)
・↑のアップデータ (これをあてないと、ヘルプが正常に機能しない)
・DirectX ランタイム (.NET言語では開発ライブラリ = 実行ライブラリ)

※ DirectXランタイムを更新すると、最新のdllが使えるようになる。
ただし、最新のdllを開発時に使用すると、実行側でもそのランタイムが必要になる、と言うことである。

ちなみに自分は 2007 Juneのdllを使用している。


動作必要環境まとめ

・DirectX9.0c ランタイム (開発時のdllに対応したバージョン以降のもの。)
・.NET Framework1.1 (大抵は入っているはず)
・.NET Framework2.0 (こちらは入っていない可能性大。)

216:名前は開発中のものです。
07/10/06 01:41:27 ZutdyDT9
>>212後半
そこまでいったらそもそも最初からC++で組んだ方が楽な気がするし、実用性も高いと思う。

217:名前は開発中のものです。
07/10/06 07:34:48 PjwFQTia
>>214
具体的に言うと、DirectX8(7かも)からビデオとメインメモリの両方にデータを持って
ロストが発生したとき、自動的に復旧するというシステムが
DirectXとして側に追加されているわけなんだが…

で、スクリーンに文字はかけてもテクスチャに文字を書くには
どーにかこーにかしなきゃならなくて、その小細工が
DirectX8になったとたんに出来なくなってしまったと

DirectX9からはなんとかなるとか聞いたんだけど、まだ調べてないんで
その辺どうなんだろう?ってのが趣旨

ビデオカードには指定したフォントで文字を書くって機能は無いから
これをするのはなかなか厄介だ、って記憶だけある

DirectX9フルサポートと考えていいのかな?

218:名前は開発中のものです。
07/10/06 08:00:48 q3E/M8lC
MDX1.1は、DirectXで言えば、何相当になるんでしょ?

MDX2.xは(消えてしまったけど)何相当だったんでしょ?
というか、MDX1.xで完成されていたなら、MDX2.xの意味はなかったと思うのですが、どうなんでしょ

219:名前は開発中のものです。
07/10/07 00:57:54 KL55DreU
>>217
それは出来そうに無いかもしれません・・・。
ただ、フォントインスタンスの
・GetGlyphdata
・PreloadFont、Glyph、Text
あたりを使えばテクスチャを入手したり、ビデオメモリに文字情報を配置できるようです。

>>218
MDXのナンバーは、どの.NET Framework バージョンの上に作られているかを示してる(はず・・・)。
なので、DirectXのバージョンとは直接の関係無いと思われます。
仮に完成していれば、開発、実行時に.NET fw1.1は入らなかったでしょう。

220:名前は開発中のものです。
07/10/07 16:08:47 0tTgQJl5
> なので、DirectXのバージョンとは直接の関係無いと思われます。
いや、機能的な話です。
DirectX8総統だったら、DCとれなかったりしますよね?

221:名前は開発中のものです。
07/10/07 19:51:19 KL55DreU
あっはっは、全然わからない・・・・orz
不安なので調べました。
DC (デバイスコンテキスト)
GDI+などを使用するときに取得する必要があるものですね。


取得出来る気がしない・・・。通常のDirectxは出来るみたいなこと書いてありましたが。調べが足らないかな・・・
.NET言語はとにかく簡単に開発するのが目的なので、あまりそういう知識が無いまま来てしまいますね。
Directxでリフレッシュレートにあわせた更新をするウィンドウを作るのも、
全てコミコミで60行前後で出来てしまいますし。
(決まりきった手順など、.NET系言語ではではデフォルト設定が存在し作れるようになった、というところがが大きいですが)


例えばMDXとは関係ありませんが、C#で純粋にウィンドウを作るだけならば、外部で多少設定が必要ですが、
以下のコードで済みますしね。
class SampleClass : Form // ウィンドウを作るためのクラスを継承した。
{
}

static class SampleEntryPoint()
{
 static void Main()
 {
  SampleClass hoge = new SampleClass(); // コンストラクタでクラスからインスタンスを作成
  hoge.show();
  while (hoge.Created)
  {
   Application.DoEvent();
  }
 }
}

222:名前は開発中のものです。
07/10/10 02:24:47 QoU150o2
>>221
そう、まさにDirectX8でなくなったのがそのGetDCなんだな
ただ、非難轟々だったらしく、DirectX9で復活したらしいという話だけ聞いた

って言っても、そもそも.NETでDCが取れたところで、
DCを使ってどーのこーのできないと意味が無いね
その辺の関数がごっそり.NETに置き換わっている気がする

223:207
07/10/11 09:50:19 0CzcpLju
やっぱりコテったほうがいいのかな?
ぐぐればすぐに出てきたので報告までに。

URLリンク(www.microsoft.com)
.NETの標準ライブラリ内にある画像描画関係のライブラリ(System.Drawing)はGDI+を使っているようです。
またこのライブラリに存在するPoint構造体、Size構造体やRectangle構造体
(いずれもXY座標や画像のサイズ、およびその組み合わせへの使用を想定した構造体)
などをMDXでは、割と引数等で使っているので、基本的にグラフィック関係をプログラムするときは
System.Drawingライブラリも参照しておくことがほとんどです。

基本的に
System.Drawing
Maicrosoft.DirectX
Maicrosoft.DirectX.Direct3D
のライブラリがあれば画像の描画には困らないと思います。
2Dゲームならばスプライト関係のみでほとんど画像描画はできます。



224:207
08/01/13 23:25:13 oBLdPERd
誰も見ていないのを承知で思い出したかのように4ヶ月ぶりにレスしてみたり。
さらにスレは3Dを作るのが目標なのに、まったく3D関連実装してる気配がないライブラリ。xファイルとか使ったことないし。作り方わからんし。

・Framework.Initialize() ・・・ゲーム製作に特化した状態にDirect3D、Input関連を初期化する関数
・Framework.Mdx.Accelerate() ・・・AltEnter、CtrlEnter、ShiftEnterが押されたか判定、モード切替、Fps切替、実装未定
・Framework.Mdx.WindowClose() ・・・ウィンドウを閉じる。
・Framework.Mdx.WindowModeToggle() ・・・モード切替。二つ↑のAltEnterはこれが呼ばれる。
・Framework.Mdx.WindowShow() ・・・ ライブラリ内で保持してるフォームインスタンスのShow()そのまま
・Framework.Mdx.WindowCreated ・・・ライブラリ内で保持してるフォームインスタンスのCreatedそのまま
・Framework.Mdx.WindowTitle ・・・タイトルバーに表示される文字列 (代入可)
・Framework.Mdx.Graph.DrawText(引数あり) ・・・非実用的デバッグ用。文字を表示したいときに。
・Framework.Mdx.Graph.MakeTexture(ファイル) ・・・テクスチャを返す。抜き色等は設定しないので事実上dds専用。
・Framework.Mdx.Graph.SpriteBegin() ・・・もともとあるSpriteBegin(アルファブレンド)そのまま。
・Framework.Mdx.Graph.SpriteEnd() ・・・もともとあるSpriteEnd()そのまま。
・Framework.Mdx.Graph.SpriteDraw(色々) ・・・2D画像描画に使用。
・Framework.Mdx.Graph.SpriteDrawFixed(色々) ・・・2D画像描画に使用。こちらは自動で画像の中心が基準になる。
・Framework.Mdx.Graph.Update() ・・・垂直同期を取りつつ描画する。(FpsSkipが1か2だと描画を間引く。)
・Framework.Mdx.Graph.Fps ・・・現在のFps (整数値、1秒ごとに更新するタイプ)
・Framework.Mdx.Graph.FpsSkip ・・・現在のFpsスキップ値。 (代入可。0~2)↑のAccelerate()のCtrlEnterはこれを++してる。
・Framework.Mdx.Graph.Render ・・・関数ポインタ。描画関連の処理は全てひとつにまとめた後、このポインタに代入する。

225:続き
08/01/13 23:27:45 oBLdPERd
・Framework.Mdx.Input.Poll() ・・・入力機器関連を全て更新
・Framework.Mdx.Input.KeyFlg(対象のキー) ・・・押されていればtrue
・Framework.Mdx.Input.JoyFlg(対象のデバイス、対象のボタン) ・・・押されていればtrue
・Framework.Mdx.Input.JoyX(対象のデバイス) ・・・-1000~1000で返る
・Framework.Mdx.Input.JoyY(対象のデバイス) ・・・-1000~1000で返る

近く実装予定
・キーコンフィグ用のクラス
・シューティングの表示物向けクラス
・シューティングの弾幕を作成するための関数
・シーンを管理する機構
・音の再生に関するクラス
・カメラ、ワールド座標の実装、3Dスプライトの実装

いつか実装予定(3Dモデルが自分で作れるようになったら。)
・メッシュ、マテリアル、テクスチャをまとめた≒3Dモデルをそのままクラス化したクラス
・↑と何かを利用して、スプライトのように簡単に3Dを描画する関数。

226:名前は開発中のものです。
08/01/19 02:51:53 MZ4kIRhC
Managed directXでゲーム作成中なんだが、まともな資料やコミュニティがないので困るぜ。
どこか質問出来るとこは無いのだろうか。公式にもカテゴリ無いしな。

227:名前は開発中のものです。
08/01/19 15:32:37 EG6dJFOe
Managed って氏んだよね?

228:207
08/01/19 19:53:52 wecEoPCw
>>227
サンプルは少し前のSDKから添付されなくなったけど、ランタイムにはManagedが動くためのファイルはまだあります

>>226
基本的な情報なら
URLリンク(msdn2.microsoft.com)
URLリンク(www.microsoft.com)
URLリンク(www.microsoft.com)

ここら辺でしょうか
他にも個人サイトが3つ4つあると思います
それでも足らない場合は、ネイティブDirectXのほうを見れば大体は解決すると思います。

229:名前は開発中のものです。
08/01/19 22:55:03 lZOHlVzA
D3DRMみたいにOS変わったらなくなりそうで怖いな

230:名前は開発中のものです。
08/01/20 03:29:23 FGM0szlo
>228
お、コミュニティのアーカイブは知らなかった。ありがとう。
しかし道程は遠そうだ。
いきなりManaged directXで3Dゲームを作ろうというのは無理があるのかね。

231:名前は開発中のものです。
08/01/21 22:16:13 QkkzJVl3
2Dのゲームは作ったが3Dは経験が無いので、
ぜひ>>230が道しるべを作っていってくれ。

232:名前は開発中のものです。
08/02/09 22:26:04 Ynomr7lQ
>>224のFramework名前空間がなんなのか気になるんだけど。
XNA?

233:207
08/02/10 05:08:02 /G3xnOO+
>>232
Frameworkは自作中のstaticクラスです。眠い。



最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch