ハンドル欲しいMobile系、Direct3DやShaderなどについて書いています。系はほとんど使っていないので、余りよくわかっていないことが多いです。シェーダーのバリエーション管理をどうするか。命令にプリプロセッサ用のデータを渡すことができます。ナンバーと関係なく共通で使用します。構造体の配列を作っておきます。機能わけのために、これまでプリプロセッサ命令を活用してきました。同じシェーダープログラムでもシンボル定義に応じて複数の機能に対応させます。~#endifといった感じでコンパイル時の機能指定に応じてコードを分けることができます。コンパイラの場合、特にプリプロセッサ用の定義データをそのまま渡すわけではなさそうです。一度のコンパイルでも複数のソースを同時に渡すことができます。1つをプログラム内で生成したテキストに割り当てます。1つとして与えることで、D3D_SHADER_MACROと同じような使い方ができました。シェーダーのみと割り切ったおかげで無駄のないすっきりした構成になっているようです。場合も、多くの機能がシェーダーで汎用化されたために従来固定機能だったパイプラインの機能がいくつか使えなくなっています。的には重複する固定機能の設定が残っていたため、どちらでも動くのかどうか、使えるのかどうかなどわかりにくい点がありました。リセットすることで解消しています。以降はシェーダーのみと割り切って、重複する固定機能の多くを排除しました。方により近いといえるかもしれません。