Microsoft DirectX 8.0 (C++) |
頂点シェーダを作成し、作成が成功した場合は、そのシェーダをカレント シェーダとして設定する。
HRESULT CreateVertexShader( CONST DWORD* pDeclaration, CONST DWORD* pFunction, DWORD* pHandle, DWORD Usage );
このパラメータを NULL 以外にすると、シェーダはプログラム可能になる。
成功した場合は、D3D_OK を返す。
失敗した場合は、次のいずれかの値を返す。
D3DERR_INVALIDCALL |
D3DERR_OUTOFVIDEOMEMORY |
E_OUTOFMEMORY |
頂点シェーダは、シェーダの宣言と機能を指定する 2 つのトークン配列によって定義される。トークン配列は、1 つ以上の DWORD トークンで構成されており、配列の末尾は特殊な値 0xFFFFFFFF のトークンで示される。
シェーダの宣言はシェーダの静的な外部インターフェイスを定義しており、頂点レジスタ入力に対するストリーム データのバインドや、シェーダの定数メモリにロードされる値などが含まれる。シェーダの機能では、シェーダがデバイスにバインドされている間に各頂点に対する処理のために実行される命令の配列として、シェーダの動作が定義されている。機能配列を指定しないでシェーダを作成すると、そのシェーダがカレント シェーダのときには、固定機能の頂点処理が適用される。
宣言のトークン配列を生成するために使用するマクロの定義については、d3d8types.h を参照すること。
ヘッダー : d3d8.h で宣言。
インポート ライブラリ : D3d8.lib を使用。
IDirect3DDevice8::DeleteVertexShader、D3DXAssembleShader、D3DXAssembleShaderFromFileA、D3DXAssembleShaderFromFileW、D3DXDeclaratorFromFVF