C# ファイル高速読込

速度比較参考

【C#】ファイル読み取り速度比較

計測項目計測時間(ms)
txt形式のファイルにStreamReader.ReadToEndを使用して一括読み込み5.8
txt形式のファイルにStreamReader.ReadLineを使用して1行ずつ読み込み10.0
txt形式のファイルにFile.ReadAllTextを使用して読み込み3.1
txt形式のファイルにFile.ReadAllLinesを使用して読み込み11.4

ReadAllTextはメモリ不足になるようだ

【C#】TextFieldParserで100万行のCSVファイルに挑む。

[C#]バイナリファイルの書き込み・読み込み方法とは?BinaryWriterクラスやBinaryReaderクラスを使用したbyte配列の読み書き方法や構造体の読み書き方法

【C#】ファイルを読み込む方法を紹介(StreamReader)

C# DirectInput

Xinputでゲームコントローラーを実装しようと思ったら、中国製の製品でIpega 9083S、未だにDirect Inputを使っている。色々調べたが、それが現実なのか?

Ipega 9083Sだが、同じ製品でも仕様が違う、私が買った(現在2022/06/01)バージョンは、ケーブル接続でXInputとDirect Inputを切り替えられるが、Bluetooth接続だとDirect Inputしか対応しない。XInput使う方法をだれか教えてくれよ。

ここまで辿り着いくのにも、色々と大変だった。まず、マニュアルが手元に無かったのでネット上に落ちているものを探して、やっていたが、どうも違う。最初はケーブル接続はXInputのみかと思っていたが、Ipega 9083Sは出荷時期で仕様が違うようだ。これで最初ハマった。

次にハマったのが、ライブラリをどれにするか? よっぽどC++で書いてDLLとして読み込もうかと思ったほどだった。C#だと対応しているライブラリがサポート中止となっており選びようが無い。たまたま見つけたのが、Vortice.DirectInput これが2022/6/7公開日だったので、これにした。

ネットで使い方をググったら、使い方が直ぐ判るのかと思って色々と調べたが何も出てこない。こういう時は海外サイトだと思い、あっちこっち行ってみたが無い。

しょうがないので、ソースを調べて使い方を調査した。

解ってみれば簡単だったのだが、まぁ~大変だった。誰か先にやっといてよ。もぉ~。ちなみにXInputはネットに使い方が書いてあった。なんでBluetooth接続だけXInputが使えないのかな? たぶんケーブル接続がXInputだけだったので、ケーブル接続にDirect Inputを追加したように思える、逆なんだよ! 勝手な妄想だけどBluetooth接続が不安定なのでは? だからケーブル接続にDirect Input要望があがるんだ、アンテナの作りがわりぃんだよ!

書いていたら眠くなったので寝る!

Visual Studio C# ゲームコントローラ

Direct Input

DirectX 12 Ultimateのリリース

.NET Framework用ラッパー

Managed DirectXは、Microsoft XNA (XNA) に置換えられたが2014年4月に開発・サポート終了

SlimDX2012年1月を最後に更新されておらず、公式サイトも2019年現在は消失している

DirextXを使用したプログラムをC#で作成することが目的の場合は、Windows 10、Visual Studio 2017の組み合わせでは、Windwos API Code Pack内にある、DirextXのサンプルコードは、DirextXのバージョンの関係で動作しなかったので、はじめから、SharpDXを使用したほうが良いと思います。

Windows API CodePackに含まれている機能

WindowsAPICodePack-Core

SharpDX

]

SharpDXとWindowsAPICodePack-Coreを比べてみると更新日がWindowsAPICodePack-Coreの方が新しい、しかし、使い方がいまいち判らない。なので、SharpDXを選ぶことにするが動くかな?

C# Xinput

DirectInputとXinput

DirectInput

コントローラーの入力方式ではポピュラーなタイプで、これまでのゲーム機の多く採用されてきた方式。レースゲームに使用できるハンドル型コントローラーなどの特殊なタイプにも対応しているのが特徴です。

Xinput

マイクロソフトが新しく開発した入力方式です。基本的にはマイクロソフトが販売している、Xboxのコントローラーにデザインを想定した作りものになっています。そのためボタン配置、振動設定などの変更が必要なく遊ぶことが可能です。

参考

https://thebest-1.com/a4936/