- 【C++】 DirectX初心者質問スレ Part39 【C】 [転載禁止]©2ch.net
102 :デフォルトの名無しさん[]:2015/02/20(金) 05:41:17.60 ID:I+scCS4N - [内容: DirectX 11 の DXUT :: DXUTState :: m_State の使い方に関して。]
DirectX SDKの "DXUT"について、ちょっと質問です。 現在の開発環境は、OS: Windows 7 SP1, C++での開発環境は VC++2010 Express SP1, Windows 8 SDKを導入済み、DirectX11.0 用のSDK (June 2010)を使っています。 DXUTState というインターフェイスがありますよね、DirectX 9c の後半頃からありますが。こいつの DXUTState::m_State は実質的には DXUTを使うにあたってのグローバル・クラス変数的、な役割だと思うのですが。 DXUTを使う場合、グローバル変数 g_DXUTState がすでにあるのに、グローバル変数で直接アクセスしないで、GetDXUTState() で関数ポインタ一時変数やとにかくローカル変数 経由でメンバ変数やメンバ関数にアクセスしています。 その本質的な理由(データを隠す以外の)を教えてください。自分なりに想像してみたのですが、はっきりしません。 ・マルチスレッドでのデッドロックを避けるために、排他制御で必須? ・CPU(やGPU)のキャッシュメモリ(L1,L2,L3, etc) を有効・高速に使えるため? ・シェーダ活用での相性的に。 ・(やっぱり単にデータを隠したいだけ。C++らしく。) ・(MicroSoftだから。風格・威厳がコードには必須。) いずれC言語にカスタム化(必要な部分のみ)したいと考えていたのですが、どうも以前のフレームワーク移植時のようにはいかないような気がして、質問してみました。 使いづらいため、DXUTでの DXUTState::m_State 間接アクセスの理由を知っておきたいです。 どうかお願いします。 (※ちなみに、C++を使うにしても、メンバーはすべてPublicで結構です。可読性が良いので。)
|
|