「プログラミング/共通知識」の版間の差分

Win32 API と Direct Xのうち、初心者がまず先に学ぶべきは Win32 API です。 Direct X プログラミングの文法は、文法上は Win32 API を踏襲しているので、まず先に Win32 API を習得する必要があります。
(世間では歴史的経緯から、「WindowsのGUI描画はWin32APIをベースにしており、例外としてDirect XでプログラムされたGUIアプリを動作させる時だけDirect Xを使ってる」という解釈が通説ですが、しかし、実はそのような保障はないのです。 もしかしたら、もはやDirect XがWinodws内部のGUI描画でベースのシステムになっている可能性もあります。)
(Win32 API と Direct Xのうち、初心者がまず先に学ぶべきは Win32 API です。 Direct X プログラミングの文法は、文法上は Win32 API を踏襲しているので、まず先に Win32 API を習得する必要があります。)
もし、WindowsをもちいたGUIプログラミングで、(初心者レベルでない、)中級以上の機能のアプリを作りたい場合、Win32 API と Direct X という機能を使うしか、ありません。
 
 
よく、Windows向けのゲームで「Direct Xランタイムが必要です」などと説明書などで記載されているので、てっきりDirect X をゲーム専用に追加インストールする必要のある追加機能だと誤解しがちだが、実はゲームとは無関係に既にWindowsのインストール時点で Direct X は Windowsに標準インストールされています。
Win32 API と Direct Xのうち、初心者がまず先に学ぶべきは Win32 API です。
 
Direct X プログラミングの文法は、文法上は Win32 API を踏襲しているので、まず先に Win32 API を習得する必要があります。
 
 
書店だと、もしかしたらゲームプログラミング書のコーナーで、Direct Xの書籍を見かけるのにWin32 API の書籍を見かけないような事態も、あるかもしれません。しかし、 Win32 APIの知識が無い状態で、 Direct X の書籍だけを買って読んでも、書籍の内容を理解できないでしょう。
 
 
===== Win32 API =====
Win32 APIを使うには、Visual C++ で「Windowsデスクトップアプリケーション」というのを選ぶしか、ありません。
 
一般のVisual C++入門書でよく紹介される「CLR」では、よほどトリッキーなことをしないかぎり、機能が限定的であり、高度なアプリを作れません。
しかし、.Net Framework 開発環境で開発されたアプリには、さらに .Net Framework ランタイムがユーザーに必要になります。(プログラマだけでなく、そのアプリを使う人にもまた、専用のランタイムが必要になる。)
 
===== Direct X =====
Direct X は、主に、Windows用の画像関係のランタイムやライブラリのうち、3D-CGの計算や、GPUなどマルチメディア関係デバイスの制御などの、高度な機能が、まとめられています。
Win 32 API でのプログラミングを行っていくと、何かと機能的に不完全なところがあります。
 
初心者は、当面は Direct X のプログラムを書く必要は、無いでしょう。
そのような機能不足でも、Win32 APIを使って改善するプログラムが作れればよいのですが、しかし、そうとは限りません。
 
 
ですが、Windowsでアプリを作る際に、知識としてDirect X について、いろいろと知っておく必要があります。
なぜなら、現在のWinodwsの多くの機能は、Direct X をもとにグラフィック描画をしてる部分もあるからです。
 
なぜなら、現在の Windows では、実はウィンドウは3D-CGとして処理しています。(アナタが今見ているwebブラウザのウィンドウも、Direct X が起動しており、ウィンドウを 3D-CG として処理して、ディスプレイにウィンドウ表示しています。)
 
ユーザーにはDirect X の名前が表示されてないだけで、実はWindowsの画像処理のいろいろな箇所で、 Direct X は動作しています。
かつて、Windows95のころは、Direct X はゲーム用の専用のライブラリでした。しかし、現在は違います。現時点のWindowsでは、Direct X は、Windowsでのグラフィック描画用に標準的に使われるライブラリです。
 
なぜなら、現在のWinodwsの多くの機能は、Direct X をもとにグラフィック描画をしてる部分もあるからです。
世間一般のソースが非公開にされているアプリでは、もしかしたら、ゲームソフトでなくてもDirect Xを動作させるコードを書いているアプリケーションもあるかもしれません。
 
 
.Net Framework で提供されているAPIのうちの画像関係のAPIには、Win32APIの画像APIでは提供されていない高機能なAPIもありますが、おそらく、,Net Frameworkの画像関係のAPIは、おそらく背後で Direct X が動作しているものと思われます。
 
 
 
なお、よく、Windows向けのゲームで「Direct Xランタイムが必要です」などと説明書などで記載されているので、てっきりDirect X をゲーム専用に追加インストールする必要のある追加機能だと誤解しがちだが、実はゲームとは無関係に既にWindowsのインストール時点で Direct X は Windowsに標準インストールされています。
 
Windows95くらいの過去のバージョンではDirect X は購入時点ではWindows製品には付属しておらず追加インストールしないと使えなかった時代もありました。、しかし、現時点のwindows7以降(7も含む)のバージョンでは、Direct X はWindowsの購入時点で付属しており、Windowsのインストールと一緒にDirect X もインストールされています。
 
 
 
Win 32 API でのプログラミングを行っていくと、何かと機能的に不完全なところがあります。
 
そのような機能不足でも、Win32 APIを使って改善するプログラムが作れればよいのですが、しかし、そうとは限りません。GPUなど画像関係ハードウェアの制御などは、Win32APIではサポートされていない場合もあります
 
 
世間一般のソースが非公開にされているアプリでは、もしかしたら、ゲームソフトでなくてもDirect Xを動作させるコードを書いているアプリケーションもあるかもしれません。
 
 
マイクロソフト社がソース非公開のため、Windows内部でのグラフィック描画機能にWin32APIとDirectXとをどう使いわけているかも非公開であり、詳細は不明です。
 
世間では歴史的経緯から、「WindowsのGUI描画はWin32APIをベースにしており、例外としてDirect XでプログラムされたGUIアプリを動作させる時だけDirect Xを使ってる」という解釈が通説ですが、しかし、実はそのような保いのです。
 
もしかしたら、もはやDirect XがWinodws内部のGUI描画でベースのシステムになっている可能性もあります。ひょっとしたら、近年のWindowsでは(GUIのコードの原則はDirect Xとして)、Win32APIのコードのほうが例外的に処理されている可能性もあります。
23,070

回編集