3D?

2011-07-18 15 views
6

WinForms内で3Dビューを使用するにはどうすればよいですか?3D?

XNAを使用する必要がありますか?

私はこのチュートリアルが見つかりました:http://create.msdn.com/en-US/education/catalog/sample/winforms_series_1

をしかし、私は私のWinFormsプロジェクトにちょうどContentLibraryとコンテンツを追加する方法を理解しません。

Scaleform GFxを使用することはできますか? Half2Dまたは3D用の ?

+0

私はこれをXNA 2.0でもう一度やり直してみましたが、XNAがそれを引っ掛けてデータなどを渡さなかったため、WinFormsで入力できないという一般的な意見がありました。私はこれが4.0で変更されているかどうかを調べることに興味があります。 –

+1

どのような種類の3Dですか? WPFは別のオプションかもしれません。 –

+0

@ Xeon06:最近は大丈夫です。 –

答えて

5

WPFを使用してください。フォームを組み合わせてマッチさせることができます。 WPFにはwinformsコンテナがあり、ウィンドウにドロップして塗りつぶすことができます。しかし、あなたは小さな教育で箱の細かいところからWPFを使うことができます。 - tip =ウィンドウを固定サイズにするか、サイズを変更するとコントロールがホースします。そんなことをするのは難しいです。

次に、3dをしたい画像のwpfパネルを配置します。インターネットから3D wpfコードをカットアンドペーストします。

7

OpenTKのGLコントロール - OpenTK WinForms controlを使用することをお勧めします。これはクロスプラットフォームで、使いやすく、OpenGLに基づいています。クロスプラットフォームおよびモノラルに準拠しています。これを動作させるために必要な「ハック」はありません.WindFormsコンテナに3Dコンテンツを埋め込むための非常に簡単な方法です。 OpenTKはLGPLのライセンスを受けています。つまり、商用アプリケーションに組み込むことができます。 OpenTK/OpenGLは現在Linux、Mac、Windows上で動作し、3Dコンテンツを.NETまたはMonoアプリケーションに埋め込むための最も簡単な方法です。私はWinFormsメソッドでXNAを試してみましたが、やや混乱してしまいました。その後、彼らはXNA 4をリリースし、以前のXNAアプリケーションは新しいバージョンとALL互換ではありませんでした。 DirectXのようにOpenGLでこの問題を頻繁に見つけることはできません。

+0

どの3Dモデルの拡張機能でこれを使用できますか? – Danpe

+0

OpenTKのウェブサイトにOBJローダーがあります。あなたが好きな場合にアップロードできる、衝突検出機能を内蔵した変更済みのObjLoaderを作ったのです。私はあなたのフォーラムのどこかでサポートを見つけることができる他のフォーマットもあると確信しています。 – IDWMaster

+0

私は今すぐに行きますが、今日は午後6時ごろにObjLoaderのソースコードを投稿します(中部時間、米国とカナダ)。 – IDWMaster

9

XNAコンテンツプロジェクトを直接参照する方法はありません(既定のWinFormsテンプレートを使用した場合のように)標準のVisual C#プロジェクトから直接を呼び出します。

XNAの "Windows Game Library"プロジェクト(空のものも含む)を作成し、そのプロジェクトの "コンテンツ参照の追加"オプションを使用してXNAコンテンツプロジェクトへの参照を追加する必要があります。 (そのためのテンプレートは「Empty Content Project」と呼ばれています。)そして、この新しいGame Libraryプロジェクトへの参照をWinFormsプロジェクトに追加します。

「Windowsゲーム」プロジェクトを作成してから「フォームを追加」を使用すると、空白のフォームと必要なアセンブリ参照が追加されます。標準のWinFormsプロジェクト(または「WinForms 1」サンプルがどのようなものを使用しているか参照)からProgram.csのXNAテンプレートGame1.csProgram.csを交換する必要があります。

動的コンテンツ読み込みの場合は、「WinForms 2」サンプルをチェックしてください。

1

使用できるライブラリがいくつかあります。 IDWMasterにはOpenTKがあります(OpenGLはあなたの走行距離が変わるかもしれませんが、私は大ファンではありません)。

DirectXを使用する場合は、質問にタグを付けると、いくつかのオプションがあります。マイクロソフトは以前はManaged DirectXを提供していましたが、XNAが推奨されていません。 SlimDXは、DirectXライブラリ用の最新のラッパーであり、ほとんどの機能を公開しています(パフォーマンスはいくらかあります)。 SharpDXも利用可能ですが、私はそれがSlimDXよりやや速いはずですが、私は使用していません。

また、COM相互運用機能を使用してDirectX APIの一部を直接使用することもできます。 C#と.Netは、ネイティブのコンポーネントを含むCOMコンポーネントとの相互運用性に優れています。かなりの量のIntPtrを処理する必要があり、手作業によるマーシャリングが必要な場合がありますが、IDirect3DDeviceには問題を引き起こす方法があまり多くありません(IIRC)。