0

現在、Windows 7でアセンブラーを学習しており、ゲームを作成したいと考えています(教育目的のみ)。モード13hを使用して、DOSのアセンブリでVGAをプログラムする方法に関するリソースを見つけました。それは私に考えさせられました:高レベルのグラフィックライブラリを使用せずにWindows 7でグラフィックカードを直接プログラミングする方法はありますか?それがオプションでない場合、アセンブリからグラフィックライブラリを使用してグラフィックプログラムを作成できますか?

前もって感謝します、

RileyH

4

3 に答える 3

0

Windowsは保護モードで実行されるため、ユーザーモードから直接HWリソースにアクセスすることはできません。グラフィックカードを含むすべてのHWリソースには、カーネルモードモジュール(つまりドライバー)からのみアクセスできます。ユーザーモードからアクセスする必要がある場合は、要求された操作を実行するためにカードのドライバーをアドレス指定する必要があります。それへのインターフェースは、使用したいアセンブリコマンドを送信するだけでなく、公開された関数の定義されたセットを送信します。高レベルのグラフィックライブラリは、このインターフェイスとその使用法を知る必要性を隠す可能性があります。グラフィックライブラリのアドレス指定は、特定のライブラリ定義と(再び)公開されたインターフェイスに完全に依存します。基本的に、アセンブリを含むすべての言語からアドレス指定できる必要があります。

于 2013-03-22T10:16:01.607 に答える
0

モード13hについておっしゃっていますが、2Dゲームをやりたいと思います。画面バッファは、選択した任意の形式(256色RGB、パレット化、24ビットARGBなど)で自分で処理し、libSDLなどの高レベルライブラリまたはWindows自体のGDIを介して「レンダリング」できます。グラフィックカードを直接打つことは私がお勧めするものではありません(非常に複雑です)

于 2013-03-22T10:18:00.277 に答える
0

高レベルのグラフィックライブラリが必要ない場合は、SetPixel();のように1つのライブラリ内の低レベルのものに制限してください。これは、提供するサービスのレベルとほぼ同じint 13Hです。いいえ、int 13HWindowsのハードウェアを直接使用または操作することはできません。そして、とにかくVGAモードは必要ありません。これは、すべての実用的な最新のグラフィックカードの機能が大幅に低下したものです。

必要なものをすべてアセンブリに書き込むことができますが、それはかなり無意味です。コールスタックの最上位は、通常、ボトルネックが存在する場所ではありません。少なくとも2Dゲームではそうではありません。

したがって、GDIやDirectXを学びましょう。そして、絶対に必要であることがわかるまで、アセンブリを使用しないでください。集会は教育プロジェクトのためのものではありません。

于 2013-03-22T18:20:42.040 に答える