D3DCAPS9
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| DeviceType | D3DDEVTYPE | 4 | +0 | +0 | 頂点の処理にどの種類のリソースが使用されるかを示す D3DDEVTYPE 列挙型のメンバーです。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| AdapterOrdinal | DWORD | 4 | +4 | +4 | この Direct3D デバイスが作成されたアダプターです。この序数は、この Direct3D デバイスを作成した IDirect3D9 インターフェイスのメソッドに渡す場合にのみ有効です。IDirect3D9 インターフェイスは、GetDirect3D を呼び出すことでいつでも取得できます。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Caps | DWORD | 4 | +8 | +8 | 次のドライバー固有の機能です。
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Caps2 | DWORD | 4 | +12 | +12 | D3DCAPS2 で識別されるドライバー固有の機能です。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Caps3 | DWORD | 4 | +16 | +16 | D3DCAPS3 で識別されるドライバー固有の機能です。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| PresentationIntervals | DWORD | 4 | +20 | +20 | 利用可能なプレゼンテーションのスワップ間隔を表す値のビットマスクです。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| CursorCaps | DWORD | 4 | +24 | +24 | カーソルに対して利用できるハードウェアサポートを示すビットマスクです。Direct3D 9 ではアルファブレンドのカーソル機能は定義されていません。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| DevCaps | DWORD | 4 | +28 | +28 | デバイスの機能を示すフラグです。
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| PrimitiveMiscCaps | DWORD | 4 | +32 | +32 | その他のドライバープリミティブ機能です。D3DPMISCCAPS を参照してください。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| RasterCaps | DWORD | 4 | +36 | +36 | ラスター描画機能に関する情報です。このメンバーには次のフラグを 1 つ以上指定できます。
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ZCmpCaps | DWORD | 4 | +40 | +40 | z バッファーの比較機能です。このメンバーには次のフラグを 1 つ以上指定できます。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| SrcBlendCaps | DWORD | 4 | +44 | +44 | ソースブレンドの機能です。このメンバーには次のフラグを 1 つ以上指定できます。(ソースとデスティネーションの RGBA 値は、それぞれ添字 s と d で示されます。)
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| DestBlendCaps | DWORD | 4 | +48 | +48 | デスティネーションブレンドの機能です。このメンバーには、SrcBlendCaps メンバーに定義されているものと同じ機能を指定できます。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| AlphaCmpCaps | DWORD | 4 | +52 | +52 | アルファテストの比較機能です。このメンバーには、ZCmpCaps メンバーに定義されているものと同じ機能フラグを含めることができます。このメンバーに D3DPCMPCAPS_ALWAYS 機能のみ、または D3DPCMPCAPS_NEVER 機能のみが含まれる場合、ドライバーはアルファテストをサポートしません。それ以外の場合、フラグはアルファテストでサポートされる個々の比較を示します。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ShadeCaps | DWORD | 4 | +56 | +56 | シェーディング操作の機能です。一般に、デバイスが特定のコマンドをサポートする場合は、(D3DSHADEMODE 列挙型で指定される) D3DSHADE_FLAT モードもサポートすると想定されます。このフラグは、ドライバーがグーローシェーディングもサポートできるかどうか、およびアルファカラー成分がサポートされるかどうかを指定します。アルファ成分がサポートされない場合、生成される色のアルファ値は暗黙的に 255 になります。これは指定可能な最大のアルファ値です (すなわち、アルファ成分が最大強度の状態です)。 三角形の色、スペキュラーハイライト、フォグ、アルファの各補間には、それぞれデバイスドライバーによる実装方法をアプリケーションが調べるための機能フラグがあります。 このメンバーには次のフラグを 1 つ以上指定できます。
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| TextureCaps | DWORD | 4 | +60 | +60 | その他のテクスチャーマッピング機能です。このメンバーには次のフラグを 1 つ以上指定できます。
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| TextureFilterCaps | DWORD | 4 | +64 | +64 | テクスチャーに対するテクスチャーフィルタリング機能です。ステージごとのフィルタリング機能は、複数テクスチャーのブレンドを行う際にテクスチャーステージでサポートされるフィルタリングモードを表します。このメンバーには、D3DPTFILTERCAPS で定義されているステージごとのテクスチャーフィルタリングフラグを任意に組み合わせて指定できます。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| CubeTextureFilterCaps | DWORD | 4 | +68 | +68 | キューブテクスチャーに対するテクスチャーフィルタリング機能です。ステージごとのフィルタリング機能は、複数テクスチャーのブレンドを行う際にテクスチャーステージでサポートされるフィルタリングモードを表します。このメンバーには、D3DPTFILTERCAPS で定義されているステージごとのテクスチャーフィルタリングフラグを任意に組み合わせて指定できます。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| VolumeTextureFilterCaps | DWORD | 4 | +72 | +72 | ボリュームテクスチャーに対するテクスチャーフィルタリング機能です。ステージごとのフィルタリング機能は、複数テクスチャーのブレンドを行う際にテクスチャーステージでサポートされるフィルタリングモードを表します。このメンバーには、D3DPTFILTERCAPS で定義されているステージごとのテクスチャーフィルタリングフラグを任意に組み合わせて指定できます。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| TextureAddressCaps | DWORD | 4 | +76 | +76 | テクスチャーオブジェクトのテクスチャーアドレッシング機能です。このメンバーには次のフラグを 1 つ以上指定できます。
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| VolumeTextureAddressCaps | DWORD | 4 | +80 | +80 | ボリュームテクスチャーのテクスチャーアドレッシング機能です。このメンバーには、TextureAddressCaps メンバーに定義されているフラグを 1 つ以上指定できます。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| LineCaps | DWORD | 4 | +84 | +84 | 線描画プリミティブの機能を定義します。
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| MaxTextureWidth | DWORD | 4 | +88 | +88 | このデバイスの最大テクスチャー幅です。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| MaxTextureHeight | DWORD | 4 | +92 | +92 | このデバイスの最大テクスチャー高さです。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| MaxVolumeExtent | DWORD | 4 | +96 | +96 | ボリュームテクスチャーの 3 つの寸法 (幅、高さ、深さ) のいずれかに指定できる最大値です。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| MaxTextureRepeat | DWORD | 4 | +100 | +100 | この数値は、正規化後のテクスチャー座標の整数部ビットが取り得る最大範囲を表します。テクスチャー座標は 32 ビット符号付き整数として格納され、整数部に 27 ビット、浮動小数点の小数部に 5 ビットが使用されます。最大の整数インデックスである 2²⁷ は、ハードウェアがテクスチャー座標のスケーリングをどのように行うかに応じて、最大のテクスチャー座標を決定するために使用されます。 一部のハードウェアは D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE 機能を報告します。この場合、デバイスはテクスチャーサイズによるテクスチャー座標のスケーリングを、補間とテクスチャーアドレスモードの適用の後まで遅延させます。そのため、テクスチャーをラップできる回数は MaxTextureRepeat の整数値で与えられます。 これに対して望ましくないケースとして、一部のハードウェアでは D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE が設定されておらず、デバイスは補間の前に (最高の詳細レベルを使用して) テクスチャー座標をテクスチャーサイズでスケーリングします。この場合、テクスチャーをラップできる回数は MaxTextureRepeat / テクスチャーサイズ に制限されます。 たとえば、MaxTextureRepeat が 32k で、テクスチャーのサイズが 4k であるとします。ハードウェアが D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE を設定している場合、テクスチャーをラップできる回数は MaxTextureRepeat と等しく、この例では 32k になります。設定していない場合、テクスチャーをラップできる回数は MaxTextureRepeat をテクスチャーサイズで割った値と等しく、この例では 32k/4k になります。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| MaxTextureAspectRatio | DWORD | 4 | +104 | +104 | ハードウェアがサポートする最大のテクスチャーアスペクト比です。通常は 2 の累乗です。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| MaxAnisotropy | DWORD | 4 | +108 | +108 | D3DSAMP_MAXANISOTROPY テクスチャーステージ状態に指定できる最大の有効値です。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| MaxVertexW | FLOAT | 4 | +112 | +112 | デバイスがサポートする W ベースの最大深度値です。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| GuardBandLeft | FLOAT | 4 | +116 | +116 | ガードバンドクリッピング領域のスクリーン空間座標です。この矩形の内側かつビューポート矩形の外側にある座標は自動的にクリップされます。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| GuardBandTop | FLOAT | 4 | +120 | +120 | ガードバンドクリッピング領域のスクリーン空間座標です。この矩形の内側かつビューポート矩形の外側にある座標は自動的にクリップされます。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| GuardBandRight | FLOAT | 4 | +124 | +124 | ガードバンドクリッピング領域のスクリーン空間座標です。この矩形の内側かつビューポート矩形の外側にある座標は自動的にクリップされます。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| GuardBandBottom | FLOAT | 4 | +128 | +128 | ガードバンドクリッピング領域のスクリーン空間座標です。この矩形の内側かつビューポート矩形の外側にある座標は自動的にクリップされます。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ExtentsAdjust | FLOAT | 4 | +132 | +132 | アンチエイリアスカーネルに対応するために、範囲矩形を外側へ広げるピクセル数です。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| StencilCaps | DWORD | 4 | +136 | +136 | サポートされるステンシルバッファー操作を指定するフラグです。ステンシル操作は、3 つのステンシルバッファー操作レンダー状態 (D3DRS_STENCILFAIL、D3DRS_STENCILPASS、D3DRS_STENCILZFAIL) のすべてで有効であると想定されます。 詳細については、D3DSTENCILCAPS を参照してください。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| FVFCaps | DWORD | 4 | +140 | +140 | フレキシブル頂点フォーマット (FVF) の機能です。
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| TextureOpCaps | DWORD | 4 | +144 | +144 | このデバイスがサポートするテクスチャー操作を示すフラグの組み合わせです。次のフラグが定義されています。
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| MaxTextureBlendStages | DWORD | 4 | +148 | +148 | 固定機能パイプラインでサポートされるテクスチャーブレンドステージの最大数です。この値は利用可能なブレンダーの数です。プログラマブルピクセルパイプラインでは、ピクセルシェーダー命令が使用する一意のテクスチャーレジスターの数に相当します。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| MaxSimultaneousTextures | DWORD | 4 | +152 | +152 | 固定機能パイプラインのサンプラーステージに同時にバインドできるテクスチャーの最大数です。同じテクスチャーが 2 つのサンプラーステージにバインドされている場合は、2 つのテクスチャーとして数えられます。 サンプラーステージの数が各ピクセルシェーダー バージョンによって決まるプログラマブルパイプラインでは、この値に意味はありません。テクスチャー宣言命令の数も各ピクセルシェーダー バージョンによって決まります。Pixel Shaders を参照してください。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| VertexProcessingCaps | DWORD | 4 | +156 | +156 | 頂点処理の機能です。同じ物理デバイスであっても、この機能は CreateDevice に指定するパラメーターに応じて Direct3D デバイスごとに異なる場合があります。D3DVTXPCAPS を参照してください。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| MaxActiveLights | DWORD | 4 | +160 | +160 | 同時にアクティブにできるライトの最大数です。同じ物理デバイスであっても、この機能は CreateDevice に指定するパラメーターに応じて Direct3D デバイスごとに異なる場合があります。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| MaxUserClipPlanes | DWORD | 4 | +164 | +164 | サポートされるユーザー定義クリッピング平面の最大数です。このメンバーは 0 になる場合があります。同じ物理デバイスであっても、この機能は CreateDevice に指定するパラメーターに応じて Direct3D デバイスごとに異なる場合があります。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| MaxVertexBlendMatrices | DWORD | 4 | +168 | +168 | このデバイスがマルチマトリックス頂点ブレンドを実行する際に適用できる行列の最大数です。同じ物理デバイスであっても、この機能は CreateDevice に指定するパラメーターに応じて Direct3D デバイスごとに異なる場合があります。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| MaxVertexBlendMatrixIndex | DWORD | 4 | +172 | +172 | 頂点ごとのインデックスを使用してインデックス指定できる最大の行列インデックスを指定する DWORD 値です。行列の数は MaxVertexBlendMatrixIndex + 1 であり、これが行列パレットのサイズになります。ライティングのためにブレンドが必要な頂点データに法線が含まれる場合、行列の数はこの機能フラグで指定される数の半分になります。MaxVertexBlendMatrixIndex が 0 に設定されている場合、ドライバーはインデックス付き頂点ブレンドをサポートしません。この値が 0 でない場合、インデックスの有効な範囲は 0 から MaxVertexBlendMatrixIndex までです。 MaxVertexBlendMatrixIndex の値が 0 の場合、ドライバーがインデックス付き行列をサポートしていないことを示します。 ソフトウェア頂点処理を使用する場合は、法線のブレンドの有無にかかわらず、インデックス付き頂点ブレンドに 256 個の行列を使用できます。 同じ物理デバイスであっても、この機能は CreateDevice に指定するパラメーターに応じて Direct3D デバイスごとに異なる場合があります。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| MaxPointSize | FLOAT | 4 | +176 | +176 | ポイントプリミティブの最大サイズです。1.0f に設定されている場合、デバイスはポイントサイズの制御をサポートしません。範囲は 1.0f 以上です。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| MaxPrimitiveCount | DWORD | 4 | +180 | +180 | DrawPrimitive の呼び出しごとに指定できるプリミティブの最大数です。次の 2 つのケースがあります。
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| MaxVertexIndex | DWORD | 4 | +184 | +184 | ハードウェア頂点処理でサポートされるインデックスの最大サイズです。32 ビットのインデックスバッファーを作成することは可能ですが、この値が 0x0000FFFF より大きくない限り、そのインデックスバッファーを使用してレンダリングすることはできません。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| MaxStreams | DWORD | 4 | +188 | +188 | SetStreamSource で同時に使用できるデータストリームの最大数です。有効な範囲は 1 から 16 です。この値が 0 の場合、そのドライバーは Direct3D 9 ドライバーではない点に注意してください。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| MaxStreamStride | DWORD | 4 | +192 | +192 | SetStreamSource の最大ストライドです。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| VertexShaderVersion | DWORD | 4 | +196 | +196 | 頂点シェーダーのメジャーバージョンとマイナーバージョンを表す 2 つの数値です。各頂点シェーダー バージョンでサポートされる命令の詳細については、Version 1_x、Version 2_0、Version 2_0 Extended、Version 3_0 を参照してください。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| MaxVertexShaderConst | DWORD | 4 | +200 | +200 | 定数用に予約されている頂点シェーダーの Vertex Shader Registers の数です。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| PixelShaderVersion | DWORD | 4 | +204 | +204 | ピクセルシェーダーのメジャーバージョンとマイナーバージョンを表す 2 つの数値です。各ピクセルシェーダー バージョンでサポートされる命令の詳細については、Version 1_x、Version 2_0、Version 2_0 Extended、Version 3_0 を参照してください。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| PixelShader1xMaxValue | FLOAT | 4 | +208 | +208 | ピクセルシェーダーの演算成分の最大値です。この値は、ピクセルのカラーブレンド操作でサポートされる値の内部的な範囲を示します。実装は、報告した範囲内では、データを変更せずに (クランプせずに) ピクセル処理を通過させなければなりません。通常、このメンバーの値は絶対値です。たとえば 1.0 は範囲が -1.0 から 1 であることを示し、8.0 は範囲が -8.0 から 8.0 であることを示します。ピクセルシェーダーをサポートするハードウェアでは、この値は 1.0 以上 (>= 1.0) でなければなりません。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| DevCaps2 | DWORD | 4 | +212 | +212 | アダプティブテセレーションに関するデバイスドライバーの機能です。詳細については、D3DDEVCAPS2 を参照してください | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| MaxNpatchTessellationLevel | FLOAT | 4 | +216 | +216 | TBD | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Reserved5 | DWORD | 4 | +220 | +220 | TBD | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| MasterAdapterOrdinal | DWORD | 4 | +224 | +224 | この従属アダプターに対してどのデバイスがマスターであるかを示す数値です。この数値はアダプター値と同じ空間から取得されます。 マルチヘッドのサポートでは、1 つのヘッドがマスターヘッドとされ、同じカード上の他のすべてのヘッドは従属ヘッドとされます。システムに複数のマルチヘッドアダプターが存在する場合、1 つのマルチヘッドアダプターに属するマスターとその従属ヘッドをグループと呼びます。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| AdapterOrdinalInGroup | DWORD | 4 | +228 | +228 | API がヘッドを参照する順序を示す数値です。マスターアダプターの値は常に 0 です。これらの値はアダプターの序数には対応しません。グループ内のヘッドにのみ適用されます。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| NumberOfAdaptersInGroup | DWORD | 4 | +232 | +232 | このアダプターグループ内のアダプターの数です (マスターの場合のみ)。通常のアダプターでは 1 になります。マルチヘッドカードのマスターアダプターでは 1 より大きい値になります。マルチヘッドカードの従属アダプターでは 0 になります。各カードが持てるマスターは最大 1 つですが、従属アダプターは複数持つことができます。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| DeclTypes | DWORD | 4 | +236 | +236 | 頂点宣言に含まれる 1 つ以上のデータ型の組み合わせです。D3DDTCAPS を参照してください。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| NumSimultaneousRTs | DWORD | 4 | +240 | +240 | 同時に使用できるレンダーターゲットの数です。この数は少なくとも 1 でなければなりません。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| StretchRectFilterCaps | DWORD | 4 | +244 | +244 | StretchRect がサポートする操作を示す定数の組み合わせです。このフィールドに設定できるフラグは次のとおりです。
詳細については、D3DTEXTUREFILTERTYPE および D3DTEXTUREFILTERTYPE を参照してください。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| VS20Caps | D3DVSHADERCAPS2_0 | 16 | +248 | +248 | デバイスは頂点シェーダー バージョン 2_0 の拡張機能をサポートします。D3DVSHADERCAPS2_0 を参照してください。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| PS20Caps | D3DPSHADERCAPS2_0 | 20 | +264 | +264 | デバイスはピクセルシェーダー バージョン 2_0 の拡張機能をサポートします。D3DPSHADERCAPS2_0 を参照してください。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| VertexTextureFilterCaps | DWORD | 4 | +284 | +284 | デバイスは頂点シェーダーのテクスチャーフィルター機能をサポートします。D3DPTFILTERCAPS を参照してください。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| MaxVShaderInstructionsExecuted | DWORD | 4 | +288 | +288 | フロー制御を使用する場合に実行できる頂点シェーダー命令の最大数です。プログラムできる命令の最大数は MaxVertexShader30InstructionSlots です。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| MaxPShaderInstructionsExecuted | DWORD | 4 | +292 | +292 | フロー制御を使用する場合に実行できるピクセルシェーダー命令の最大数です。プログラムできる命令の最大数は MaxPixelShader30InstructionSlots です。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| MaxVertexShader30InstructionSlots | DWORD | 4 | +296 | +296 | サポートされる頂点シェーダー命令スロットの最大数です。この機能に設定できる最大値は 32768 です。vs_3_0 をサポートするデバイスは、少なくとも 512 個の命令スロットをサポートする必要があります。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| MaxPixelShader30InstructionSlots | DWORD | 4 | +300 | +300 | サポートされるピクセルシェーダー命令スロットの最大数です。この機能に設定できる最大値は 32768 です。ps_3_0 をサポートするデバイスは、少なくとも 512 個の命令スロットをサポートする必要があります。 |
公式ドキュメント
Direct3D オブジェクトを通じて公開されるハードウェアの機能を表します。
解説(Remarks)
MaxTextureBlendStages メンバーと MaxSimultaneousTextures メンバーは似ているように見えますが、含まれる情報は異なります。MaxTextureBlendStages メンバーは現在のデバイスがサポートするテクスチャーブレンドステージの総数を保持し、MaxSimultaneousTextures メンバーはそれらのステージのうち SetTexture メソッドを使用してテクスチャーをバインドできるステージ数を表します。
ドライバーがこの構造体を設定する際には、機能の取得に使用しているインターフェイス (IDirect3DDevice9 など) が実行バッファーをサポートしていない場合でも、実行バッファー関連の機能に値を設定することがあります。
一般に、テクスチャーを使用した後、シーンの途中でそれを変更するとパフォーマンス上の問題が発生する場合があります。現在の BeginScene と EndScene のブロック内で使用しているテクスチャーが、どうしても必要な場合を除いて破棄されないようにしてください。シーン内でのテクスチャー使用量が極端に多い場合、結果は未定義になります。これは、シーン内で使用したテクスチャーを変更し、かつ空きのテクスチャーメモリがない場合に発生します。そのようなシステムでは、EndScene の時点で z バッファーの内容が無効になります。この種のハードウェアでは、アプリケーションは BeginScene と EndScene の組の内側でバックバッファーとの間の UpdateSurface を呼び出さないでください。また、D3DPRASTERCAPS_ZBUFFERLESSHSR 機能フラグが設定されている場合、アプリケーションは z バッファーにアクセスしようとしないでください。さらに、アプリケーションは BeginScene と EndScene の組の内側でバックバッファーや z バッファーをロックしないでください。
ミップマップされたテクスチャーに関する次のフラグは、Direct3D 9 ではサポートされません。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
各言語での定義
#include <windows.h>
// D3DVSHADERCAPS2_0 (x64 16 / x86 16 バイト)
typedef struct D3DVSHADERCAPS2_0 {
DWORD Caps;
INT DynamicFlowControlDepth;
INT NumTemps;
INT StaticFlowControlDepth;
} D3DVSHADERCAPS2_0;
// D3DPSHADERCAPS2_0 (x64 20 / x86 20 バイト)
typedef struct D3DPSHADERCAPS2_0 {
DWORD Caps;
INT DynamicFlowControlDepth;
INT NumTemps;
INT StaticFlowControlDepth;
INT NumInstructionSlots;
} D3DPSHADERCAPS2_0;
// D3DCAPS9 (x64 304 / x86 304 バイト)
typedef struct D3DCAPS9 {
D3DDEVTYPE DeviceType;
DWORD AdapterOrdinal;
DWORD Caps;
DWORD Caps2;
DWORD Caps3;
DWORD PresentationIntervals;
DWORD CursorCaps;
DWORD DevCaps;
DWORD PrimitiveMiscCaps;
DWORD RasterCaps;
DWORD ZCmpCaps;
DWORD SrcBlendCaps;
DWORD DestBlendCaps;
DWORD AlphaCmpCaps;
DWORD ShadeCaps;
DWORD TextureCaps;
DWORD TextureFilterCaps;
DWORD CubeTextureFilterCaps;
DWORD VolumeTextureFilterCaps;
DWORD TextureAddressCaps;
DWORD VolumeTextureAddressCaps;
DWORD LineCaps;
DWORD MaxTextureWidth;
DWORD MaxTextureHeight;
DWORD MaxVolumeExtent;
DWORD MaxTextureRepeat;
DWORD MaxTextureAspectRatio;
DWORD MaxAnisotropy;
FLOAT MaxVertexW;
FLOAT GuardBandLeft;
FLOAT GuardBandTop;
FLOAT GuardBandRight;
FLOAT GuardBandBottom;
FLOAT ExtentsAdjust;
DWORD StencilCaps;
DWORD FVFCaps;
DWORD TextureOpCaps;
DWORD MaxTextureBlendStages;
DWORD MaxSimultaneousTextures;
DWORD VertexProcessingCaps;
DWORD MaxActiveLights;
DWORD MaxUserClipPlanes;
DWORD MaxVertexBlendMatrices;
DWORD MaxVertexBlendMatrixIndex;
FLOAT MaxPointSize;
DWORD MaxPrimitiveCount;
DWORD MaxVertexIndex;
DWORD MaxStreams;
DWORD MaxStreamStride;
DWORD VertexShaderVersion;
DWORD MaxVertexShaderConst;
DWORD PixelShaderVersion;
FLOAT PixelShader1xMaxValue;
DWORD DevCaps2;
FLOAT MaxNpatchTessellationLevel;
DWORD Reserved5;
DWORD MasterAdapterOrdinal;
DWORD AdapterOrdinalInGroup;
DWORD NumberOfAdaptersInGroup;
DWORD DeclTypes;
DWORD NumSimultaneousRTs;
DWORD StretchRectFilterCaps;
D3DVSHADERCAPS2_0 VS20Caps;
D3DPSHADERCAPS2_0 PS20Caps;
DWORD VertexTextureFilterCaps;
DWORD MaxVShaderInstructionsExecuted;
DWORD MaxPShaderInstructionsExecuted;
DWORD MaxVertexShader30InstructionSlots;
DWORD MaxPixelShader30InstructionSlots;
} D3DCAPS9;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct D3DVSHADERCAPS2_0
{
public uint Caps;
public int DynamicFlowControlDepth;
public int NumTemps;
public int StaticFlowControlDepth;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct D3DPSHADERCAPS2_0
{
public uint Caps;
public int DynamicFlowControlDepth;
public int NumTemps;
public int StaticFlowControlDepth;
public int NumInstructionSlots;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct D3DCAPS9
{
public int DeviceType;
public uint AdapterOrdinal;
public uint Caps;
public uint Caps2;
public uint Caps3;
public uint PresentationIntervals;
public uint CursorCaps;
public uint DevCaps;
public uint PrimitiveMiscCaps;
public uint RasterCaps;
public uint ZCmpCaps;
public uint SrcBlendCaps;
public uint DestBlendCaps;
public uint AlphaCmpCaps;
public uint ShadeCaps;
public uint TextureCaps;
public uint TextureFilterCaps;
public uint CubeTextureFilterCaps;
public uint VolumeTextureFilterCaps;
public uint TextureAddressCaps;
public uint VolumeTextureAddressCaps;
public uint LineCaps;
public uint MaxTextureWidth;
public uint MaxTextureHeight;
public uint MaxVolumeExtent;
public uint MaxTextureRepeat;
public uint MaxTextureAspectRatio;
public uint MaxAnisotropy;
public float MaxVertexW;
public float GuardBandLeft;
public float GuardBandTop;
public float GuardBandRight;
public float GuardBandBottom;
public float ExtentsAdjust;
public uint StencilCaps;
public uint FVFCaps;
public uint TextureOpCaps;
public uint MaxTextureBlendStages;
public uint MaxSimultaneousTextures;
public uint VertexProcessingCaps;
public uint MaxActiveLights;
public uint MaxUserClipPlanes;
public uint MaxVertexBlendMatrices;
public uint MaxVertexBlendMatrixIndex;
public float MaxPointSize;
public uint MaxPrimitiveCount;
public uint MaxVertexIndex;
public uint MaxStreams;
public uint MaxStreamStride;
public uint VertexShaderVersion;
public uint MaxVertexShaderConst;
public uint PixelShaderVersion;
public float PixelShader1xMaxValue;
public uint DevCaps2;
public float MaxNpatchTessellationLevel;
public uint Reserved5;
public uint MasterAdapterOrdinal;
public uint AdapterOrdinalInGroup;
public uint NumberOfAdaptersInGroup;
public uint DeclTypes;
public uint NumSimultaneousRTs;
public uint StretchRectFilterCaps;
public D3DVSHADERCAPS2_0 VS20Caps;
public D3DPSHADERCAPS2_0 PS20Caps;
public uint VertexTextureFilterCaps;
public uint MaxVShaderInstructionsExecuted;
public uint MaxPShaderInstructionsExecuted;
public uint MaxVertexShader30InstructionSlots;
public uint MaxPixelShader30InstructionSlots;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure D3DVSHADERCAPS2_0
Public Caps As UInteger
Public DynamicFlowControlDepth As Integer
Public NumTemps As Integer
Public StaticFlowControlDepth As Integer
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure D3DPSHADERCAPS2_0
Public Caps As UInteger
Public DynamicFlowControlDepth As Integer
Public NumTemps As Integer
Public StaticFlowControlDepth As Integer
Public NumInstructionSlots As Integer
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure D3DCAPS9
Public DeviceType As Integer
Public AdapterOrdinal As UInteger
Public Caps As UInteger
Public Caps2 As UInteger
Public Caps3 As UInteger
Public PresentationIntervals As UInteger
Public CursorCaps As UInteger
Public DevCaps As UInteger
Public PrimitiveMiscCaps As UInteger
Public RasterCaps As UInteger
Public ZCmpCaps As UInteger
Public SrcBlendCaps As UInteger
Public DestBlendCaps As UInteger
Public AlphaCmpCaps As UInteger
Public ShadeCaps As UInteger
Public TextureCaps As UInteger
Public TextureFilterCaps As UInteger
Public CubeTextureFilterCaps As UInteger
Public VolumeTextureFilterCaps As UInteger
Public TextureAddressCaps As UInteger
Public VolumeTextureAddressCaps As UInteger
Public LineCaps As UInteger
Public MaxTextureWidth As UInteger
Public MaxTextureHeight As UInteger
Public MaxVolumeExtent As UInteger
Public MaxTextureRepeat As UInteger
Public MaxTextureAspectRatio As UInteger
Public MaxAnisotropy As UInteger
Public MaxVertexW As Single
Public GuardBandLeft As Single
Public GuardBandTop As Single
Public GuardBandRight As Single
Public GuardBandBottom As Single
Public ExtentsAdjust As Single
Public StencilCaps As UInteger
Public FVFCaps As UInteger
Public TextureOpCaps As UInteger
Public MaxTextureBlendStages As UInteger
Public MaxSimultaneousTextures As UInteger
Public VertexProcessingCaps As UInteger
Public MaxActiveLights As UInteger
Public MaxUserClipPlanes As UInteger
Public MaxVertexBlendMatrices As UInteger
Public MaxVertexBlendMatrixIndex As UInteger
Public MaxPointSize As Single
Public MaxPrimitiveCount As UInteger
Public MaxVertexIndex As UInteger
Public MaxStreams As UInteger
Public MaxStreamStride As UInteger
Public VertexShaderVersion As UInteger
Public MaxVertexShaderConst As UInteger
Public PixelShaderVersion As UInteger
Public PixelShader1xMaxValue As Single
Public DevCaps2 As UInteger
Public MaxNpatchTessellationLevel As Single
Public Reserved5 As UInteger
Public MasterAdapterOrdinal As UInteger
Public AdapterOrdinalInGroup As UInteger
Public NumberOfAdaptersInGroup As UInteger
Public DeclTypes As UInteger
Public NumSimultaneousRTs As UInteger
Public StretchRectFilterCaps As UInteger
Public VS20Caps As D3DVSHADERCAPS2_0
Public PS20Caps As D3DPSHADERCAPS2_0
Public VertexTextureFilterCaps As UInteger
Public MaxVShaderInstructionsExecuted As UInteger
Public MaxPShaderInstructionsExecuted As UInteger
Public MaxVertexShader30InstructionSlots As UInteger
Public MaxPixelShader30InstructionSlots As UInteger
End Structureimport ctypes
from ctypes import wintypes
class D3DVSHADERCAPS2_0(ctypes.Structure):
_fields_ = [
("Caps", wintypes.DWORD),
("DynamicFlowControlDepth", ctypes.c_int),
("NumTemps", ctypes.c_int),
("StaticFlowControlDepth", ctypes.c_int),
]
class D3DPSHADERCAPS2_0(ctypes.Structure):
_fields_ = [
("Caps", wintypes.DWORD),
("DynamicFlowControlDepth", ctypes.c_int),
("NumTemps", ctypes.c_int),
("StaticFlowControlDepth", ctypes.c_int),
("NumInstructionSlots", ctypes.c_int),
]
class D3DCAPS9(ctypes.Structure):
_fields_ = [
("DeviceType", ctypes.c_int),
("AdapterOrdinal", wintypes.DWORD),
("Caps", wintypes.DWORD),
("Caps2", wintypes.DWORD),
("Caps3", wintypes.DWORD),
("PresentationIntervals", wintypes.DWORD),
("CursorCaps", wintypes.DWORD),
("DevCaps", wintypes.DWORD),
("PrimitiveMiscCaps", wintypes.DWORD),
("RasterCaps", wintypes.DWORD),
("ZCmpCaps", wintypes.DWORD),
("SrcBlendCaps", wintypes.DWORD),
("DestBlendCaps", wintypes.DWORD),
("AlphaCmpCaps", wintypes.DWORD),
("ShadeCaps", wintypes.DWORD),
("TextureCaps", wintypes.DWORD),
("TextureFilterCaps", wintypes.DWORD),
("CubeTextureFilterCaps", wintypes.DWORD),
("VolumeTextureFilterCaps", wintypes.DWORD),
("TextureAddressCaps", wintypes.DWORD),
("VolumeTextureAddressCaps", wintypes.DWORD),
("LineCaps", wintypes.DWORD),
("MaxTextureWidth", wintypes.DWORD),
("MaxTextureHeight", wintypes.DWORD),
("MaxVolumeExtent", wintypes.DWORD),
("MaxTextureRepeat", wintypes.DWORD),
("MaxTextureAspectRatio", wintypes.DWORD),
("MaxAnisotropy", wintypes.DWORD),
("MaxVertexW", ctypes.c_float),
("GuardBandLeft", ctypes.c_float),
("GuardBandTop", ctypes.c_float),
("GuardBandRight", ctypes.c_float),
("GuardBandBottom", ctypes.c_float),
("ExtentsAdjust", ctypes.c_float),
("StencilCaps", wintypes.DWORD),
("FVFCaps", wintypes.DWORD),
("TextureOpCaps", wintypes.DWORD),
("MaxTextureBlendStages", wintypes.DWORD),
("MaxSimultaneousTextures", wintypes.DWORD),
("VertexProcessingCaps", wintypes.DWORD),
("MaxActiveLights", wintypes.DWORD),
("MaxUserClipPlanes", wintypes.DWORD),
("MaxVertexBlendMatrices", wintypes.DWORD),
("MaxVertexBlendMatrixIndex", wintypes.DWORD),
("MaxPointSize", ctypes.c_float),
("MaxPrimitiveCount", wintypes.DWORD),
("MaxVertexIndex", wintypes.DWORD),
("MaxStreams", wintypes.DWORD),
("MaxStreamStride", wintypes.DWORD),
("VertexShaderVersion", wintypes.DWORD),
("MaxVertexShaderConst", wintypes.DWORD),
("PixelShaderVersion", wintypes.DWORD),
("PixelShader1xMaxValue", ctypes.c_float),
("DevCaps2", wintypes.DWORD),
("MaxNpatchTessellationLevel", ctypes.c_float),
("Reserved5", wintypes.DWORD),
("MasterAdapterOrdinal", wintypes.DWORD),
("AdapterOrdinalInGroup", wintypes.DWORD),
("NumberOfAdaptersInGroup", wintypes.DWORD),
("DeclTypes", wintypes.DWORD),
("NumSimultaneousRTs", wintypes.DWORD),
("StretchRectFilterCaps", wintypes.DWORD),
("VS20Caps", D3DVSHADERCAPS2_0),
("PS20Caps", D3DPSHADERCAPS2_0),
("VertexTextureFilterCaps", wintypes.DWORD),
("MaxVShaderInstructionsExecuted", wintypes.DWORD),
("MaxPShaderInstructionsExecuted", wintypes.DWORD),
("MaxVertexShader30InstructionSlots", wintypes.DWORD),
("MaxPixelShader30InstructionSlots", wintypes.DWORD),
]#[repr(C)]
pub struct D3DVSHADERCAPS2_0 {
pub Caps: u32,
pub DynamicFlowControlDepth: i32,
pub NumTemps: i32,
pub StaticFlowControlDepth: i32,
}
#[repr(C)]
pub struct D3DPSHADERCAPS2_0 {
pub Caps: u32,
pub DynamicFlowControlDepth: i32,
pub NumTemps: i32,
pub StaticFlowControlDepth: i32,
pub NumInstructionSlots: i32,
}
#[repr(C)]
pub struct D3DCAPS9 {
pub DeviceType: i32,
pub AdapterOrdinal: u32,
pub Caps: u32,
pub Caps2: u32,
pub Caps3: u32,
pub PresentationIntervals: u32,
pub CursorCaps: u32,
pub DevCaps: u32,
pub PrimitiveMiscCaps: u32,
pub RasterCaps: u32,
pub ZCmpCaps: u32,
pub SrcBlendCaps: u32,
pub DestBlendCaps: u32,
pub AlphaCmpCaps: u32,
pub ShadeCaps: u32,
pub TextureCaps: u32,
pub TextureFilterCaps: u32,
pub CubeTextureFilterCaps: u32,
pub VolumeTextureFilterCaps: u32,
pub TextureAddressCaps: u32,
pub VolumeTextureAddressCaps: u32,
pub LineCaps: u32,
pub MaxTextureWidth: u32,
pub MaxTextureHeight: u32,
pub MaxVolumeExtent: u32,
pub MaxTextureRepeat: u32,
pub MaxTextureAspectRatio: u32,
pub MaxAnisotropy: u32,
pub MaxVertexW: f32,
pub GuardBandLeft: f32,
pub GuardBandTop: f32,
pub GuardBandRight: f32,
pub GuardBandBottom: f32,
pub ExtentsAdjust: f32,
pub StencilCaps: u32,
pub FVFCaps: u32,
pub TextureOpCaps: u32,
pub MaxTextureBlendStages: u32,
pub MaxSimultaneousTextures: u32,
pub VertexProcessingCaps: u32,
pub MaxActiveLights: u32,
pub MaxUserClipPlanes: u32,
pub MaxVertexBlendMatrices: u32,
pub MaxVertexBlendMatrixIndex: u32,
pub MaxPointSize: f32,
pub MaxPrimitiveCount: u32,
pub MaxVertexIndex: u32,
pub MaxStreams: u32,
pub MaxStreamStride: u32,
pub VertexShaderVersion: u32,
pub MaxVertexShaderConst: u32,
pub PixelShaderVersion: u32,
pub PixelShader1xMaxValue: f32,
pub DevCaps2: u32,
pub MaxNpatchTessellationLevel: f32,
pub Reserved5: u32,
pub MasterAdapterOrdinal: u32,
pub AdapterOrdinalInGroup: u32,
pub NumberOfAdaptersInGroup: u32,
pub DeclTypes: u32,
pub NumSimultaneousRTs: u32,
pub StretchRectFilterCaps: u32,
pub VS20Caps: D3DVSHADERCAPS2_0,
pub PS20Caps: D3DPSHADERCAPS2_0,
pub VertexTextureFilterCaps: u32,
pub MaxVShaderInstructionsExecuted: u32,
pub MaxPShaderInstructionsExecuted: u32,
pub MaxVertexShader30InstructionSlots: u32,
pub MaxPixelShader30InstructionSlots: u32,
}import "golang.org/x/sys/windows"
type D3DVSHADERCAPS2_0 struct {
Caps uint32
DynamicFlowControlDepth int32
NumTemps int32
StaticFlowControlDepth int32
}
type D3DPSHADERCAPS2_0 struct {
Caps uint32
DynamicFlowControlDepth int32
NumTemps int32
StaticFlowControlDepth int32
NumInstructionSlots int32
}
type D3DCAPS9 struct {
DeviceType int32
AdapterOrdinal uint32
Caps uint32
Caps2 uint32
Caps3 uint32
PresentationIntervals uint32
CursorCaps uint32
DevCaps uint32
PrimitiveMiscCaps uint32
RasterCaps uint32
ZCmpCaps uint32
SrcBlendCaps uint32
DestBlendCaps uint32
AlphaCmpCaps uint32
ShadeCaps uint32
TextureCaps uint32
TextureFilterCaps uint32
CubeTextureFilterCaps uint32
VolumeTextureFilterCaps uint32
TextureAddressCaps uint32
VolumeTextureAddressCaps uint32
LineCaps uint32
MaxTextureWidth uint32
MaxTextureHeight uint32
MaxVolumeExtent uint32
MaxTextureRepeat uint32
MaxTextureAspectRatio uint32
MaxAnisotropy uint32
MaxVertexW float32
GuardBandLeft float32
GuardBandTop float32
GuardBandRight float32
GuardBandBottom float32
ExtentsAdjust float32
StencilCaps uint32
FVFCaps uint32
TextureOpCaps uint32
MaxTextureBlendStages uint32
MaxSimultaneousTextures uint32
VertexProcessingCaps uint32
MaxActiveLights uint32
MaxUserClipPlanes uint32
MaxVertexBlendMatrices uint32
MaxVertexBlendMatrixIndex uint32
MaxPointSize float32
MaxPrimitiveCount uint32
MaxVertexIndex uint32
MaxStreams uint32
MaxStreamStride uint32
VertexShaderVersion uint32
MaxVertexShaderConst uint32
PixelShaderVersion uint32
PixelShader1xMaxValue float32
DevCaps2 uint32
MaxNpatchTessellationLevel float32
Reserved5 uint32
MasterAdapterOrdinal uint32
AdapterOrdinalInGroup uint32
NumberOfAdaptersInGroup uint32
DeclTypes uint32
NumSimultaneousRTs uint32
StretchRectFilterCaps uint32
VS20Caps D3DVSHADERCAPS2_0
PS20Caps D3DPSHADERCAPS2_0
VertexTextureFilterCaps uint32
MaxVShaderInstructionsExecuted uint32
MaxPShaderInstructionsExecuted uint32
MaxVertexShader30InstructionSlots uint32
MaxPixelShader30InstructionSlots uint32
}type
D3DVSHADERCAPS2_0 = record
Caps: DWORD;
DynamicFlowControlDepth: Integer;
NumTemps: Integer;
StaticFlowControlDepth: Integer;
end;
D3DPSHADERCAPS2_0 = record
Caps: DWORD;
DynamicFlowControlDepth: Integer;
NumTemps: Integer;
StaticFlowControlDepth: Integer;
NumInstructionSlots: Integer;
end;
D3DCAPS9 = record
DeviceType: Integer;
AdapterOrdinal: DWORD;
Caps: DWORD;
Caps2: DWORD;
Caps3: DWORD;
PresentationIntervals: DWORD;
CursorCaps: DWORD;
DevCaps: DWORD;
PrimitiveMiscCaps: DWORD;
RasterCaps: DWORD;
ZCmpCaps: DWORD;
SrcBlendCaps: DWORD;
DestBlendCaps: DWORD;
AlphaCmpCaps: DWORD;
ShadeCaps: DWORD;
TextureCaps: DWORD;
TextureFilterCaps: DWORD;
CubeTextureFilterCaps: DWORD;
VolumeTextureFilterCaps: DWORD;
TextureAddressCaps: DWORD;
VolumeTextureAddressCaps: DWORD;
LineCaps: DWORD;
MaxTextureWidth: DWORD;
MaxTextureHeight: DWORD;
MaxVolumeExtent: DWORD;
MaxTextureRepeat: DWORD;
MaxTextureAspectRatio: DWORD;
MaxAnisotropy: DWORD;
MaxVertexW: Single;
GuardBandLeft: Single;
GuardBandTop: Single;
GuardBandRight: Single;
GuardBandBottom: Single;
ExtentsAdjust: Single;
StencilCaps: DWORD;
FVFCaps: DWORD;
TextureOpCaps: DWORD;
MaxTextureBlendStages: DWORD;
MaxSimultaneousTextures: DWORD;
VertexProcessingCaps: DWORD;
MaxActiveLights: DWORD;
MaxUserClipPlanes: DWORD;
MaxVertexBlendMatrices: DWORD;
MaxVertexBlendMatrixIndex: DWORD;
MaxPointSize: Single;
MaxPrimitiveCount: DWORD;
MaxVertexIndex: DWORD;
MaxStreams: DWORD;
MaxStreamStride: DWORD;
VertexShaderVersion: DWORD;
MaxVertexShaderConst: DWORD;
PixelShaderVersion: DWORD;
PixelShader1xMaxValue: Single;
DevCaps2: DWORD;
MaxNpatchTessellationLevel: Single;
Reserved5: DWORD;
MasterAdapterOrdinal: DWORD;
AdapterOrdinalInGroup: DWORD;
NumberOfAdaptersInGroup: DWORD;
DeclTypes: DWORD;
NumSimultaneousRTs: DWORD;
StretchRectFilterCaps: DWORD;
VS20Caps: D3DVSHADERCAPS2_0;
PS20Caps: D3DPSHADERCAPS2_0;
VertexTextureFilterCaps: DWORD;
MaxVShaderInstructionsExecuted: DWORD;
MaxPShaderInstructionsExecuted: DWORD;
MaxVertexShader30InstructionSlots: DWORD;
MaxPixelShader30InstructionSlots: DWORD;
end;const D3DVSHADERCAPS2_0 = extern struct {
Caps: u32,
DynamicFlowControlDepth: i32,
NumTemps: i32,
StaticFlowControlDepth: i32,
};
const D3DPSHADERCAPS2_0 = extern struct {
Caps: u32,
DynamicFlowControlDepth: i32,
NumTemps: i32,
StaticFlowControlDepth: i32,
NumInstructionSlots: i32,
};
const D3DCAPS9 = extern struct {
DeviceType: i32,
AdapterOrdinal: u32,
Caps: u32,
Caps2: u32,
Caps3: u32,
PresentationIntervals: u32,
CursorCaps: u32,
DevCaps: u32,
PrimitiveMiscCaps: u32,
RasterCaps: u32,
ZCmpCaps: u32,
SrcBlendCaps: u32,
DestBlendCaps: u32,
AlphaCmpCaps: u32,
ShadeCaps: u32,
TextureCaps: u32,
TextureFilterCaps: u32,
CubeTextureFilterCaps: u32,
VolumeTextureFilterCaps: u32,
TextureAddressCaps: u32,
VolumeTextureAddressCaps: u32,
LineCaps: u32,
MaxTextureWidth: u32,
MaxTextureHeight: u32,
MaxVolumeExtent: u32,
MaxTextureRepeat: u32,
MaxTextureAspectRatio: u32,
MaxAnisotropy: u32,
MaxVertexW: f32,
GuardBandLeft: f32,
GuardBandTop: f32,
GuardBandRight: f32,
GuardBandBottom: f32,
ExtentsAdjust: f32,
StencilCaps: u32,
FVFCaps: u32,
TextureOpCaps: u32,
MaxTextureBlendStages: u32,
MaxSimultaneousTextures: u32,
VertexProcessingCaps: u32,
MaxActiveLights: u32,
MaxUserClipPlanes: u32,
MaxVertexBlendMatrices: u32,
MaxVertexBlendMatrixIndex: u32,
MaxPointSize: f32,
MaxPrimitiveCount: u32,
MaxVertexIndex: u32,
MaxStreams: u32,
MaxStreamStride: u32,
VertexShaderVersion: u32,
MaxVertexShaderConst: u32,
PixelShaderVersion: u32,
PixelShader1xMaxValue: f32,
DevCaps2: u32,
MaxNpatchTessellationLevel: f32,
Reserved5: u32,
MasterAdapterOrdinal: u32,
AdapterOrdinalInGroup: u32,
NumberOfAdaptersInGroup: u32,
DeclTypes: u32,
NumSimultaneousRTs: u32,
StretchRectFilterCaps: u32,
VS20Caps: D3DVSHADERCAPS2_0,
PS20Caps: D3DPSHADERCAPS2_0,
VertexTextureFilterCaps: u32,
MaxVShaderInstructionsExecuted: u32,
MaxPShaderInstructionsExecuted: u32,
MaxVertexShader30InstructionSlots: u32,
MaxPixelShader30InstructionSlots: u32,
};type
D3DVSHADERCAPS2_0 {.bycopy.} = object
Caps: uint32
DynamicFlowControlDepth: int32
NumTemps: int32
StaticFlowControlDepth: int32
D3DPSHADERCAPS2_0 {.bycopy.} = object
Caps: uint32
DynamicFlowControlDepth: int32
NumTemps: int32
StaticFlowControlDepth: int32
NumInstructionSlots: int32
D3DCAPS9 {.bycopy.} = object
DeviceType: int32
AdapterOrdinal: uint32
Caps: uint32
Caps2: uint32
Caps3: uint32
PresentationIntervals: uint32
CursorCaps: uint32
DevCaps: uint32
PrimitiveMiscCaps: uint32
RasterCaps: uint32
ZCmpCaps: uint32
SrcBlendCaps: uint32
DestBlendCaps: uint32
AlphaCmpCaps: uint32
ShadeCaps: uint32
TextureCaps: uint32
TextureFilterCaps: uint32
CubeTextureFilterCaps: uint32
VolumeTextureFilterCaps: uint32
TextureAddressCaps: uint32
VolumeTextureAddressCaps: uint32
LineCaps: uint32
MaxTextureWidth: uint32
MaxTextureHeight: uint32
MaxVolumeExtent: uint32
MaxTextureRepeat: uint32
MaxTextureAspectRatio: uint32
MaxAnisotropy: uint32
MaxVertexW: float32
GuardBandLeft: float32
GuardBandTop: float32
GuardBandRight: float32
GuardBandBottom: float32
ExtentsAdjust: float32
StencilCaps: uint32
FVFCaps: uint32
TextureOpCaps: uint32
MaxTextureBlendStages: uint32
MaxSimultaneousTextures: uint32
VertexProcessingCaps: uint32
MaxActiveLights: uint32
MaxUserClipPlanes: uint32
MaxVertexBlendMatrices: uint32
MaxVertexBlendMatrixIndex: uint32
MaxPointSize: float32
MaxPrimitiveCount: uint32
MaxVertexIndex: uint32
MaxStreams: uint32
MaxStreamStride: uint32
VertexShaderVersion: uint32
MaxVertexShaderConst: uint32
PixelShaderVersion: uint32
PixelShader1xMaxValue: float32
DevCaps2: uint32
MaxNpatchTessellationLevel: float32
Reserved5: uint32
MasterAdapterOrdinal: uint32
AdapterOrdinalInGroup: uint32
NumberOfAdaptersInGroup: uint32
DeclTypes: uint32
NumSimultaneousRTs: uint32
StretchRectFilterCaps: uint32
VS20Caps: D3DVSHADERCAPS2_0
PS20Caps: D3DPSHADERCAPS2_0
VertexTextureFilterCaps: uint32
MaxVShaderInstructionsExecuted: uint32
MaxPShaderInstructionsExecuted: uint32
MaxVertexShader30InstructionSlots: uint32
MaxPixelShader30InstructionSlots: uint32struct D3DVSHADERCAPS2_0
{
uint Caps;
int DynamicFlowControlDepth;
int NumTemps;
int StaticFlowControlDepth;
}
struct D3DPSHADERCAPS2_0
{
uint Caps;
int DynamicFlowControlDepth;
int NumTemps;
int StaticFlowControlDepth;
int NumInstructionSlots;
}
struct D3DCAPS9
{
int DeviceType;
uint AdapterOrdinal;
uint Caps;
uint Caps2;
uint Caps3;
uint PresentationIntervals;
uint CursorCaps;
uint DevCaps;
uint PrimitiveMiscCaps;
uint RasterCaps;
uint ZCmpCaps;
uint SrcBlendCaps;
uint DestBlendCaps;
uint AlphaCmpCaps;
uint ShadeCaps;
uint TextureCaps;
uint TextureFilterCaps;
uint CubeTextureFilterCaps;
uint VolumeTextureFilterCaps;
uint TextureAddressCaps;
uint VolumeTextureAddressCaps;
uint LineCaps;
uint MaxTextureWidth;
uint MaxTextureHeight;
uint MaxVolumeExtent;
uint MaxTextureRepeat;
uint MaxTextureAspectRatio;
uint MaxAnisotropy;
float MaxVertexW;
float GuardBandLeft;
float GuardBandTop;
float GuardBandRight;
float GuardBandBottom;
float ExtentsAdjust;
uint StencilCaps;
uint FVFCaps;
uint TextureOpCaps;
uint MaxTextureBlendStages;
uint MaxSimultaneousTextures;
uint VertexProcessingCaps;
uint MaxActiveLights;
uint MaxUserClipPlanes;
uint MaxVertexBlendMatrices;
uint MaxVertexBlendMatrixIndex;
float MaxPointSize;
uint MaxPrimitiveCount;
uint MaxVertexIndex;
uint MaxStreams;
uint MaxStreamStride;
uint VertexShaderVersion;
uint MaxVertexShaderConst;
uint PixelShaderVersion;
float PixelShader1xMaxValue;
uint DevCaps2;
float MaxNpatchTessellationLevel;
uint Reserved5;
uint MasterAdapterOrdinal;
uint AdapterOrdinalInGroup;
uint NumberOfAdaptersInGroup;
uint DeclTypes;
uint NumSimultaneousRTs;
uint StretchRectFilterCaps;
D3DVSHADERCAPS2_0 VS20Caps;
D3DPSHADERCAPS2_0 PS20Caps;
uint VertexTextureFilterCaps;
uint MaxVShaderInstructionsExecuted;
uint MaxPShaderInstructionsExecuted;
uint MaxVertexShader30InstructionSlots;
uint MaxPixelShader30InstructionSlots;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; D3DCAPS9 サイズ: 304 バイト(x64)
dim st, 76 ; 4byte整数×76(構造体サイズ 304 / 4 切り上げ)
; DeviceType : D3DDEVTYPE (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; AdapterOrdinal : DWORD (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; Caps : DWORD (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; Caps2 : DWORD (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; Caps3 : DWORD (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; PresentationIntervals : DWORD (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; CursorCaps : DWORD (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; DevCaps : DWORD (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; PrimitiveMiscCaps : DWORD (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; RasterCaps : DWORD (+36, 4byte) st.9 = 値 / 値 = st.9 (lpoke/lpeek も可)
; ZCmpCaps : DWORD (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; SrcBlendCaps : DWORD (+44, 4byte) st.11 = 値 / 値 = st.11 (lpoke/lpeek も可)
; DestBlendCaps : DWORD (+48, 4byte) st.12 = 値 / 値 = st.12 (lpoke/lpeek も可)
; AlphaCmpCaps : DWORD (+52, 4byte) st.13 = 値 / 値 = st.13 (lpoke/lpeek も可)
; ShadeCaps : DWORD (+56, 4byte) st.14 = 値 / 値 = st.14 (lpoke/lpeek も可)
; TextureCaps : DWORD (+60, 4byte) st.15 = 値 / 値 = st.15 (lpoke/lpeek も可)
; TextureFilterCaps : DWORD (+64, 4byte) st.16 = 値 / 値 = st.16 (lpoke/lpeek も可)
; CubeTextureFilterCaps : DWORD (+68, 4byte) st.17 = 値 / 値 = st.17 (lpoke/lpeek も可)
; VolumeTextureFilterCaps : DWORD (+72, 4byte) st.18 = 値 / 値 = st.18 (lpoke/lpeek も可)
; TextureAddressCaps : DWORD (+76, 4byte) st.19 = 値 / 値 = st.19 (lpoke/lpeek も可)
; VolumeTextureAddressCaps : DWORD (+80, 4byte) st.20 = 値 / 値 = st.20 (lpoke/lpeek も可)
; LineCaps : DWORD (+84, 4byte) st.21 = 値 / 値 = st.21 (lpoke/lpeek も可)
; MaxTextureWidth : DWORD (+88, 4byte) st.22 = 値 / 値 = st.22 (lpoke/lpeek も可)
; MaxTextureHeight : DWORD (+92, 4byte) st.23 = 値 / 値 = st.23 (lpoke/lpeek も可)
; MaxVolumeExtent : DWORD (+96, 4byte) st.24 = 値 / 値 = st.24 (lpoke/lpeek も可)
; MaxTextureRepeat : DWORD (+100, 4byte) st.25 = 値 / 値 = st.25 (lpoke/lpeek も可)
; MaxTextureAspectRatio : DWORD (+104, 4byte) st.26 = 値 / 値 = st.26 (lpoke/lpeek も可)
; MaxAnisotropy : DWORD (+108, 4byte) st.27 = 値 / 値 = st.27 (lpoke/lpeek も可)
; MaxVertexW : FLOAT (+112, 4byte) st.28 = 値 / 値 = st.28 (lpoke/lpeek も可)
; GuardBandLeft : FLOAT (+116, 4byte) st.29 = 値 / 値 = st.29 (lpoke/lpeek も可)
; GuardBandTop : FLOAT (+120, 4byte) st.30 = 値 / 値 = st.30 (lpoke/lpeek も可)
; GuardBandRight : FLOAT (+124, 4byte) st.31 = 値 / 値 = st.31 (lpoke/lpeek も可)
; GuardBandBottom : FLOAT (+128, 4byte) st.32 = 値 / 値 = st.32 (lpoke/lpeek も可)
; ExtentsAdjust : FLOAT (+132, 4byte) st.33 = 値 / 値 = st.33 (lpoke/lpeek も可)
; StencilCaps : DWORD (+136, 4byte) st.34 = 値 / 値 = st.34 (lpoke/lpeek も可)
; FVFCaps : DWORD (+140, 4byte) st.35 = 値 / 値 = st.35 (lpoke/lpeek も可)
; TextureOpCaps : DWORD (+144, 4byte) st.36 = 値 / 値 = st.36 (lpoke/lpeek も可)
; MaxTextureBlendStages : DWORD (+148, 4byte) st.37 = 値 / 値 = st.37 (lpoke/lpeek も可)
; MaxSimultaneousTextures : DWORD (+152, 4byte) st.38 = 値 / 値 = st.38 (lpoke/lpeek も可)
; VertexProcessingCaps : DWORD (+156, 4byte) st.39 = 値 / 値 = st.39 (lpoke/lpeek も可)
; MaxActiveLights : DWORD (+160, 4byte) st.40 = 値 / 値 = st.40 (lpoke/lpeek も可)
; MaxUserClipPlanes : DWORD (+164, 4byte) st.41 = 値 / 値 = st.41 (lpoke/lpeek も可)
; MaxVertexBlendMatrices : DWORD (+168, 4byte) st.42 = 値 / 値 = st.42 (lpoke/lpeek も可)
; MaxVertexBlendMatrixIndex : DWORD (+172, 4byte) st.43 = 値 / 値 = st.43 (lpoke/lpeek も可)
; MaxPointSize : FLOAT (+176, 4byte) st.44 = 値 / 値 = st.44 (lpoke/lpeek も可)
; MaxPrimitiveCount : DWORD (+180, 4byte) st.45 = 値 / 値 = st.45 (lpoke/lpeek も可)
; MaxVertexIndex : DWORD (+184, 4byte) st.46 = 値 / 値 = st.46 (lpoke/lpeek も可)
; MaxStreams : DWORD (+188, 4byte) st.47 = 値 / 値 = st.47 (lpoke/lpeek も可)
; MaxStreamStride : DWORD (+192, 4byte) st.48 = 値 / 値 = st.48 (lpoke/lpeek も可)
; VertexShaderVersion : DWORD (+196, 4byte) st.49 = 値 / 値 = st.49 (lpoke/lpeek も可)
; MaxVertexShaderConst : DWORD (+200, 4byte) st.50 = 値 / 値 = st.50 (lpoke/lpeek も可)
; PixelShaderVersion : DWORD (+204, 4byte) st.51 = 値 / 値 = st.51 (lpoke/lpeek も可)
; PixelShader1xMaxValue : FLOAT (+208, 4byte) st.52 = 値 / 値 = st.52 (lpoke/lpeek も可)
; DevCaps2 : DWORD (+212, 4byte) st.53 = 値 / 値 = st.53 (lpoke/lpeek も可)
; MaxNpatchTessellationLevel : FLOAT (+216, 4byte) st.54 = 値 / 値 = st.54 (lpoke/lpeek も可)
; Reserved5 : DWORD (+220, 4byte) st.55 = 値 / 値 = st.55 (lpoke/lpeek も可)
; MasterAdapterOrdinal : DWORD (+224, 4byte) st.56 = 値 / 値 = st.56 (lpoke/lpeek も可)
; AdapterOrdinalInGroup : DWORD (+228, 4byte) st.57 = 値 / 値 = st.57 (lpoke/lpeek も可)
; NumberOfAdaptersInGroup : DWORD (+232, 4byte) st.58 = 値 / 値 = st.58 (lpoke/lpeek も可)
; DeclTypes : DWORD (+236, 4byte) st.59 = 値 / 値 = st.59 (lpoke/lpeek も可)
; NumSimultaneousRTs : DWORD (+240, 4byte) st.60 = 値 / 値 = st.60 (lpoke/lpeek も可)
; StretchRectFilterCaps : DWORD (+244, 4byte) st.61 = 値 / 値 = st.61 (lpoke/lpeek も可)
; VS20Caps : D3DVSHADERCAPS2_0 (+248, 16byte) varptr(st)+248 を基点に操作(16byte:入れ子/配列)
; PS20Caps : D3DPSHADERCAPS2_0 (+264, 20byte) varptr(st)+264 を基点に操作(20byte:入れ子/配列)
; VertexTextureFilterCaps : DWORD (+284, 4byte) st.71 = 値 / 値 = st.71 (lpoke/lpeek も可)
; MaxVShaderInstructionsExecuted : DWORD (+288, 4byte) st.72 = 値 / 値 = st.72 (lpoke/lpeek も可)
; MaxPShaderInstructionsExecuted : DWORD (+292, 4byte) st.73 = 値 / 値 = st.73 (lpoke/lpeek も可)
; MaxVertexShader30InstructionSlots : DWORD (+296, 4byte) st.74 = 値 / 値 = st.74 (lpoke/lpeek も可)
; MaxPixelShader30InstructionSlots : DWORD (+300, 4byte) st.75 = 値 / 値 = st.75 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global D3DVSHADERCAPS2_0
#field int Caps
#field int DynamicFlowControlDepth
#field int NumTemps
#field int StaticFlowControlDepth
#endstruct
#defstruct global D3DPSHADERCAPS2_0
#field int Caps
#field int DynamicFlowControlDepth
#field int NumTemps
#field int StaticFlowControlDepth
#field int NumInstructionSlots
#endstruct
#defstruct global D3DCAPS9
#field int DeviceType
#field int AdapterOrdinal
#field int Caps
#field int Caps2
#field int Caps3
#field int PresentationIntervals
#field int CursorCaps
#field int DevCaps
#field int PrimitiveMiscCaps
#field int RasterCaps
#field int ZCmpCaps
#field int SrcBlendCaps
#field int DestBlendCaps
#field int AlphaCmpCaps
#field int ShadeCaps
#field int TextureCaps
#field int TextureFilterCaps
#field int CubeTextureFilterCaps
#field int VolumeTextureFilterCaps
#field int TextureAddressCaps
#field int VolumeTextureAddressCaps
#field int LineCaps
#field int MaxTextureWidth
#field int MaxTextureHeight
#field int MaxVolumeExtent
#field int MaxTextureRepeat
#field int MaxTextureAspectRatio
#field int MaxAnisotropy
#field float MaxVertexW
#field float GuardBandLeft
#field float GuardBandTop
#field float GuardBandRight
#field float GuardBandBottom
#field float ExtentsAdjust
#field int StencilCaps
#field int FVFCaps
#field int TextureOpCaps
#field int MaxTextureBlendStages
#field int MaxSimultaneousTextures
#field int VertexProcessingCaps
#field int MaxActiveLights
#field int MaxUserClipPlanes
#field int MaxVertexBlendMatrices
#field int MaxVertexBlendMatrixIndex
#field float MaxPointSize
#field int MaxPrimitiveCount
#field int MaxVertexIndex
#field int MaxStreams
#field int MaxStreamStride
#field int VertexShaderVersion
#field int MaxVertexShaderConst
#field int PixelShaderVersion
#field float PixelShader1xMaxValue
#field int DevCaps2
#field float MaxNpatchTessellationLevel
#field int Reserved5
#field int MasterAdapterOrdinal
#field int AdapterOrdinalInGroup
#field int NumberOfAdaptersInGroup
#field int DeclTypes
#field int NumSimultaneousRTs
#field int StretchRectFilterCaps
#field D3DVSHADERCAPS2_0 VS20Caps
#field D3DPSHADERCAPS2_0 PS20Caps
#field int VertexTextureFilterCaps
#field int MaxVShaderInstructionsExecuted
#field int MaxPShaderInstructionsExecuted
#field int MaxVertexShader30InstructionSlots
#field int MaxPixelShader30InstructionSlots
#endstruct
stdim st, D3DCAPS9 ; NSTRUCT 変数を確保
st->DeviceType = 100
mes "DeviceType=" + st->DeviceType