Microsoft DirectX 8.0 (Visual Basic)

Direct3DDevice8.CreateVertexShader

頂点シェーダを作成し、作成が成功した場合は、そのシェーダをカレント シェーダとして設定する。

object.CreateVertexShader( _ 
    DeclarationTokenArray As Long, _ 
    FunctionTokenArray As Any, _ 
    retHandle As Long, _ 
    Usage As Long)

指定項目

object
Direct3DDevice8 オブジェクトを表すオブジェクト式。
DeclarationTokenArray
頂点シェーダの宣言トークン配列の先頭要素。このパラメータではシェーダへの入力を定義し、入力データ ストリーム中の頂点要素のシェーダによる使用方法も指定する。
FunctionTokenArray
頂点シェーダの機能トークン配列の先頭要素。このパラメータでは、各頂点に適用する処理を定義する。このパラメータを ByVal 0 にすると、固定機能パイプライン用のシェーダが作成される。DeclarationTokenArray で示されているパラメータ宣言が現在の宣言になり、その後の Direct3DDevice8.SetVertexShader の呼び出しで設定できる。

このパラメータに ByVal 0 以外の値を設定すると、シェーダはプログラム可能になる。

retHandle
返される頂点シェーダのハンドル。
Usage
頂点シェーダに対する使用方法の制御情報。次のフラグを設定できる。
D3DUSAGE_SOFTWAREPROCESSING
ソフトウェア頂点処理で使用する頂点シェーダであることを示す。CONST_D3DRENDERSTATETYPE 列挙型の D3DRS_SOFTWAREVERTEXPROCESSING メンバが TRUE のときに使用する頂点シェーダに対しては D3DUSAGE_SOFTWAREPROCESSING フラグを設定しなければならず、D3DRS_SOFTWAREVERTEXPROCESSING が FALSE のときの頂点シェーダに対してはこのフラグを設定してはならない。

エラー コード

失敗した場合はエラーが発生し、Err.Number に次のいずれかの値が設定される。

D3DERR_INVALIDCALL
D3DERR_OUTOFVIDEOMEMORY
E_OUTOFMEMORY

エラー トラッピングの詳細については、Microsoft® Visual Basic® の「エラー処理」を参照すること。

注意

頂点シェーダは、シェーダの宣言と機能を指定する 2 つのトークン配列によって定義される。トークン配列は、1 つ以上の Long トークンで構成されており、配列の末尾は特殊なトークン値 &HFFFFFFFF で示される。

シェーダの宣言はシェーダの静的な外部インターフェイスを定義しており、頂点レジスタ入力に対するストリーム データのバインドや、シェーダの定数メモリにロードされる値などが含まれる。シェーダの機能では、シェーダがデバイスにバインドされている間に各頂点に対する処理のために実行される命令の配列として、シェーダの動作が定義されている。機能の配列を指定しないでシェーダを作成すると、そのシェーダがカレント シェーダのときには、固定機能の頂点処理が適用される。

宣言のトークン配列を生成するために使用する定数の定義については、d3dshader.bas を参照すること。

参照

Direct3DDevice8.DeleteVertexShaderD3DX8.AssembleShaderD3DX8.AssembleShaderFromFileD3DX8.DeclaratorFromFVF