ビデオカードを使用して画面上で物事をレンダリングする場合、正しく理解していれば、3つのオプションしか利用できません。これらは
- DirectX(またはXNA)
- OpenGL
- WindowsDriverKitとグラフィックスドライバーの最小限の実装の作成
DirectXまたはOpenGLの経験はほとんどありませんが、私が知っていることから、レンダリングパイプラインに各ピクセルをどう処理するかを指示するピクセルシェーダープログラムを作成する必要があります。これらのシェーダーはHLSLでプログラムされています。しかし、私が知る限り、DirectXもOpenGLもbyte[]
、C#プログラムからバッファーを書き込んでレンダリングできるメモリへのポインターを返すことはできません。それとも私はここで間違っていますか?
RGBデータを書き込むことができるメモリへのポインタを返すだけのグラフィックスドライバの最小限の実装を実装することが可能であるため、WDKの方が適している可能性があります。したがって、一方ではDirectXまたはOpenGLが提供する(そして私は必要としない)すべての抽象化を取り除くことができましたが、他方ではドライバー開発の複雑さは正確に時間の節約にはなりません。
また、これに関する詳細情報を検索しているときに見つけたものから、DOSの昔は、開発者が画面バッファに直接描画できるアドレス0B00などがありました。もちろんなくなり、使用できなくなったと思いますが、互換性の理由から、このメモリスペースはまだ予約されています。どういうわけかこれを利用することは可能ですか?
画面に直接書き込むことができるように、C#からビデオメモリにアクセスする最も簡単な方法は何ですか?DirectXまたはOpenGLは、バイトの配列をどこかに直接コピーして配列し、レンダリングできるような機能を提供しますか?