Direct3D の引数として頂点シェーダーに配列を渡す必要があります。シェーダー関数のシグネチャは次のようになります。
ReturnDataType main(float3 QuadPos : POSITION0, float4 OffsetArray[4] : COLOR0)
サインはOK?入力レイアウトの説明を定義するにはどうすればよいですか?
前もって感謝します。
Direct3D の引数として頂点シェーダーに配列を渡す必要があります。シェーダー関数のシグネチャは次のようになります。
ReturnDataType main(float3 QuadPos : POSITION0, float4 OffsetArray[4] : COLOR0)
サインはOK?入力レイアウトの説明を定義するにはどうすればよいですか?
前もって感謝します。
HLSL 参照ページから、関数の引数は組み込み型のみをサポートし、ユーザー定義型も組み込み型に依存します。これはネイティブ配列型、ベクトル型、または構造体型をサポートしていません。
これは構造体を使用する例です。単純に構造体を構築して、VS_INPUT のように以下のように渡すことができます。
//--------------------------------------------------------------------------------------
// Input / Output structures
//--------------------------------------------------------------------------------------
struct VS_INPUT
{
float4 vPosition : POSITION;
float3 vNormal : NORMAL;
float2 vTexcoord : TEXCOORD0;
};
struct VS_OUTPUT
{
float3 vNormal : NORMAL;
float2 vTexcoord : TEXCOORD0;
float4 vPosition : SV_POSITION;
};
//--------------------------------------------------------------------------------------
// Vertex Shader
//--------------------------------------------------------------------------------------
VS_OUTPUT VSMain( VS_INPUT Input )
{
VS_OUTPUT Output;
Output.vPosition = mul( Input.vPosition, g_mWorldViewProjection );
Output.vNormal = mul( Input.vNormal, (float3x3)g_mWorld );
Output.vTexcoord = Input.vTexcoord;
return Output;
}