Home > C# > Toolkit > SharpDX

SharpDXについて調べてみることにしました。

新規作成日 2019-02-13
最終更新日

SharpDXは、C#で、Direct Xを使用するためのラッパーの1つです。SharpDXについて調べてみることにしました。

Direct Xが使いたいわけではなく、「Windows API CodePack」のReadMeに「これからは、SharpDXを使ってね。」とあったので、フォルダ選択ダイアログなどの便利なコントールを求めて、SharpDXにたどり着きました。

確認した結果、現時点(2019-02-13)では、ドキュメントとサンプルコードが不完全なので、ソースコードから、使い方を類推できる人しか使えないと思います。

SharpDX ドキュメントの和訳

Direct XのC#向け、ラッパーのSharpDXのドキュメントは、現在のところ(2019.02.13)一部しか存在しません。存在する部分だけを和訳してみました。

翻訳したドキュメントは、GitHubで提供されているファイル内のドキュメントフォルダーのものです。

SharpDXの使用法についての内容は、存在しませんでした。

00-index

断り書き:このドキュメント・リポジトリーは、作業中です。そして、次のリリースで、改善されるでしょう。

このドキュメントの主な目的は、DirectXのAPIを取り扱うSharpDXを、どのように、使用するかを説明することです。SharpDXは、ほぼ、1人の開発者の貢献の結果です。そのため、このドキュメントは、DirectX SDKのドキュメント全体を置き換えること、あるいは、DirectX APIの詳細な使用方法を提供することを目的としていません。

したがって、既存のDirectX MSDN C ++ドキュメントや人気のあるDirectXの書籍を利用することを強くお勧めします。SharpDXは、低レベルAPI、そして、DirectX APIの上にある単なる薄い層なので、開発者は、適切にSharpDXを使うために、根底にあるC++ APIを理解する必要があります。C ++ APIを理解しても、経験豊富なC ++開発者になる必要はありませんが、あなたは、少なくともポインター、参照カウント、COMオブジェクトなどのような、単純なC++/Win32コンセプトを理解する必要があります。

このバージョンでは、きれいで使いやすいクラス・ライブラリ・リファレンスを提供することを、主な目的としています。あなたは、ドキュメントが、元のMSDNのドキュメントに対応し、便利なリンクの多くを提供していることを見るでしょう。あなたは、簡単に、SharpDXを管理したAPIとネイティブC++ APIを行き来できます。一部のリンクは、まだ完全に設定されていませんが、それらは、すぐに修正されます。

ドキュメントは、次第に構築されていくので、あなたは、既に、予想される目次を見ることができます。あなたが、貢献したい場合、あるいは、あなたが、この文書に関して提案がある場合、フォーラムに、メッセージを残してください。

01-news

Release Notes (2012-11-20)

概要

General Information

SharpDXの新しいバージョン2.4.1が、本日、ダウンロードできます。

このバージョンは、主にいくつかの問題を修正し、SharpDXツールキットを改善する、メンテナンス・バージョンです。

DirectXTkからPrimitiveBatchは、すでに、Toolkitに移植されています。また、GraphicsDevice.DrawQuadを使用して、フルスクリーンのクワッドを描画するための新しい便利な方法があります。Toolkitの変更の詳細については、以下を参照してください。

Toolkitのエフェクト・コンパイラ(tkfx.exe)の使用については、注意して下さい:あなたは、どちらのバージョンでも使用することができます:

  • DirectXエンドユーザー・ランタイム2010年6月が、インストールされている場合は、ディレクトリBin\Net40Release。
  • あるいは、あなたは、直接、D3DCompiler_46.dllに同梱されている、Bin\Win8Desktop-net40を使用することができます。
  • どちらのバージョンでも、(あなたが、d3dcompiler_46.dllを使用する場合にだけ、利用できる、最新のD3D11.1機能を使用している場合を除いて、デスクトップ、Windows RTとWindows Phone 8から)すべてのWindows用のシェーダをコンパイルできます。

前回の記事で説明したように、SharpDXは、現在、コミュニティからコードの貢献を受け入れています。このリリースでは、github上のSharpDXへの初期の貢献者からの貢献を統合しています!

サポートに関して、私は、私の主なサポートを、次のAPIの中核機能に焦点を合わせています。:

  • (Effect11フレームワークでない)Direct3D11、DXGI、D3DCompiler、XAudio2とMediaFoundationの音声部分。
  • (デスクトップ以外のプラットフォームの場合)ツールキット、Toolkit.Graphicsとコンパイラ、Toolkit.Gameアセンブリは、優先順位が低くなります。

他のAPIの場合、SharpDXでは、現在、優先度の低いサポートがあるので、私は、バグ修正や改良を加えるために、コミュニティが、参加することを強く推奨します。

フォーラムに関して、「サポートとコミュニティの変更」の記事で説明されているように、APIの使用に対応するための私の個人的な投資は、現在、はるかに優先度が低くなっています。

また、お問い合わせフォームに記載されているとおり、私は、SharpDXのバグ通知やAPIの使用についての私的な問い合わせには一切応じていません。

変更とバグの修正

Changes and bugfixes

下記の、以前の2.3バージョンのすべての変更と修正の自動的に生成されたリストから、見つけて下さい。

コードは、SharpDXコミュニティによって貢献されました。

  • WP8のための欠落したXAudio相互運用メソッドを追加しました。(変更変更
  • 誤ったSetPixelおよびSetVertexShaderConstant(FおよびI配列)の数が誤っていた場合の修正* 4(変更
  • 問題#305を修正しました。[DX11] Direct3D11.EffectPassで関数が欠落していました(変更変更
  • 入力/出力変数としてdesiredRenderTargetSizeを正しくサポートするように、IDrawingSurfaceBackgroundContentProviderNative.PrepareResourcesを修正しました。(変更
  • ブランチ 'master'をwp8にマージしました(変更
  • jbriguet/masterからのpullリクエスト#1をマージ(変更
  • リモート・トラッキング・ブランチ 'origin / master'をマージします(変更
  • SetVertexShaderConstantのための修正を更新(変更
  • ColorConverterとColor4Converterを追加(変更
  • SharpDX.MediaFoundation.CaptureDeviceAttributeKeysに、SourceType VideoCaptureGuidとAudioCaptureGuidを追加しました(変更
  • mf.dllを使用して、さまざまな機能のMediaFoundationのマッピングを修正しました(変更

ビルド

Build

  • WP8 SDKが、インストールされていないとき競合するので、SharpDXプロジェクトのProjectTypeGuidsを削除します。(変更
  • githubのREADME.markdownを更新しました(変更

SharpDoc

  • 異なるアセンブリで宣言された同じ名前空間をサポートするために、アセンブリのドキュメントを削除してください。次に、名前空間は、クラス・ライブラリ参照の最上位のレベルのトピック項目です。(変更

SharpDX

  • 問題#282を修正しました。Matrix3x2.TransformationPointが、無効でした。(変更
  • 問題#283を修正しました。MathUtilに、新しいラップ・メソッドを追加しました(変更
  • 問題#292を修正しました。RenderFormに回帰バグが導入されたため、いかなる種類の相互作用も妨げられていました。このパッチは誤って、gitに行ったコードを修正します。(変更

SharpGitLog

  • リンクを修正しました(変更

Toolkit

  • 登録された分解器がないとき、ContentManager.Loadに、例外を追加します。(変更

Toolkit.Compiler

  • FXファイルに括弧、大括弧、中括弧がない場合にチェックを追加し、構文解析エラーを生成します。(変更

Toolkit.Game

  • GraphicsDeviceManagerのPreferredGraphicsProfileに、より優れたサポートを追加しました(変更
  • ゲームクラスのように、GameSystemが、コンテンツをロードおよびアンロードできるように、IContentableを追加します。GameSystemにアクセス可能にするために、ContentとGraphicsDeviceプロパティを直接追加します。(変更
  • Desktopプラットホームのために、Activated、DeactivatedとExitingイベント・サポートを追加、(Windows RTとWP8には、まだ実装されていません)(変更
  • 問題#281を修正しました。Game.IsMouseVisibleは、現在、Desktop (bis)で動作しています(変更
  • 問題#281を修正しました。Game.IsMouseVisibleは、現在、Desktopで動作しています。(変更
  • 問題#291を修正しました。PreferredBackBufferWidth/PreferredBackBufferHeightは、全画面表示以外のシナリオで、効果的に使用できます。(変更
  • デバイスに接続されているアダプターが無効であるため、アダプタが、nullの場合、電話HWデバイス上でクラッシュする問題#309を修正しました。(変更
  • 問題#309を修正しました。GraphicsDeviceInformation.Adapterに、null値を許可します。(変更
  • 問題#310を修正しました。ゲーム内のプライベート変数が、初期化されませんでした。(変更

Toolkit.Graphics

  • texture2Dの代わりに、ShaderResourceViewを許可するために、BasicEffect.TextureViewを追加します。Texture2DBaseを受け入れるように、BasicEffect.Textureを変更します(変更)。
  • PrimitiveBatchに、コメントを追加します。既知のVertexElementsを持つ頂点に、自動的にVertexInputLayoutを追加します。(変更
  • PrimitiveQuad/GraphicsDevice.DrawQuadに、コメントを追加しました(変更
  • ジェネリックTexture.Newメソッドを追加します。TextureDescriptionに、equals/hashcodeを追加しました(変更
  • XNAに、類似しているGraphicsDevice.Clearメソッドを追加しました(変更
  • フルスクリーン・クワッド・プリミティブに、PrimitiveQuadとGraphicsDevice.DrawQuadを追加します。新しいDrawQuadメソッドを使うために、CustomEFfectContentサンプルを変更します。(変更
  • SpriteBatchに、テストとTextureInfoコメントを追加する。(変更
  • テクスチャの無秩序アクセス・ビューへのアクセスを修正しました。(変更
  • GraphicsDevice.SetVertexBuffersのバグを修正します。PrimitiveBatchが、正常に動作していることをテストします。(変更
  • SpriteBatchのコンパイル・エラーのタイプミスを修正しました(変更
  • GameWindow.AllowUserResizingを修正しました(変更
  • 問題#284を修正しました。並べ替えモードが、特定のSpriteBatch.Drawメソッドで機能していませんでした。(変更
  • 問題#286を修正しました。SpriteBatchは、複数のインスタンスで動作していませんでした。(変更
  • 問題#289を修正しました。パスが、シェーダ・ステージをnullに設定できます(変更
  • 問題#296を修正しました。Effectが、リソースで適切に動作する妨げていた効果の深刻なバグ。(変更
  • 問題#301を修正しました。SpriteEffects.FlipXXXモードは、現在、適切に動作しています(変更
  • 問題#304を修正しました。GameSystem.Initializeにvirtualを追加し、イベント・メソッドを起動する(変更
  • SpriteBatchのstatic/readonlyメンバーの順序を修正しました。使っていないメンバーを削除します。(変更
  • SpriteBatchのx64下でのパフォーマンスの奇妙な問題を修正しました。現在、x86と同等になるはずです(変更
  • デバイスをデバッグするとき、無効なエラーメッセージを回避するために、BasicEffectで、デフォルトのSamplerSateを使用するようにTexture Samplerを初期化します。(変更
  • はるかに用途が広いので、Texture2Dの代わりに、ShaderResourceViewを許可するようにSpriteBatchを変更します。(変更
  • CustomEffect.CurrentTechniqueのテストをSpriteBatchの上位レベルに移動します(変更
  • DirectXTkから、PrimitiveBatchを移植します。まだ、検証されていません。(変更
  • CustomEffectGameサンプルから、DeviceCreationFlags.Debugを削除します(変更
  • DirectXTkと同じ動作を使用して、SpriteBatchの即時モードを単純化します(変更)。
  • GraphicsDevice.GetOrCreateSharedData を更新して、 "string key"ではなく "object key"を受け入れるようにします。(変更

Toolkit.tkfxc

  • 問題#287を修正しました。ビルドに、Redist D3DCompiler_46.dllを追加します。Win8Desktop-net40バージョンのためのd3dcompiler dllを読み込むために、動的パスを使用するようにtkfxcを更新します。(変更
  • 入力が最新でない場合、コマンド・ライン・コンパイラは、現在、出力をcompiling/writingしていません。(変更

XAudio2

  • 問題#299を修正しました。DirectX11.1で、欠落していたXAudio2 FX ReverbとVolumeMeterを追加しました(変更

20-tools-sharpdoc

SharpDocは、このドキュメントの背後にある本物のツールです。SharpDX用に特別に開発された完全なドキュメンテーション・システムであり、すぐに、一般のツールとして利用できるようになるでしょう。

このドキュメンテーション・システムは、高品質のドキュメンテーションと完全に生成されたクラスAPIリファレンスを提供しています。現在の機能は、以下の通りです:

  • シンプルで強力なRazorテンプレートエンジンを使用した、完全にテンプレートに基づいたシステム。cshtml、css、Javascript、およびC#を使用して、ページを開発してください。
  • 簡単にカスタマイズ可能、上書き可能。
  • より優れたユーザー体験のためのJavaScriptとCSSを使用して、アセンブリから作成される、きれいなクラス・ライブラリ・リファレンス。
  • 名前空間とアセンブリ・ドキュメントのサポート
  • カスタム・ユーザー・トピックと目次のサポート。
  • MSDN .NETドキュメントへのリンク。
  • Sandcastleより保守が簡単で高速

未定:ドキュメンテーション・システムが、どのように動作しているかについて説明します。ドキュメントの作成方法、設定ファイル、cshtml、cssなどのカスタマイズ方法。

20-tools-sharpgen

SharpGemは、SDK C ++ヘッダーから、直接マネージDirectX APIを生成するために、特別に開発されたC ++ヘッダーから、C#コードを生成するためのツールです。あなた自身のプロジェクトに、SharpGenを使用することができます。そして、あなたのC ++ / COM互換ヘッダから、C#レイヤを生成します。

未定:ツールを使用する方法を説明します。あなたが、このツールの内部構造に関するより多くの情報を望む場合、作成者のブログからアクセス可能な以前の記事があります。

40-issues

Direct3D11.1 Video Processingクラスは、まだ完全に使えません。

Direct3D9には、メッシュとアニメーションのD3DXメソッドがありません。

このエントリーをはてなブックマークに追加

Home PC C# Illustration

Copyright (C) 2011 Horio Kazuhiko(kukekko) All Rights Reserved.
kukekko@gmail.com
ご連絡の際は、お問い合わせページのURLの明記をお願いします。
「掲載内容は私自身の見解であり、所属する組織を代表するものではありません。」