Object Hierarchy | 関連する C++クラス:ShaderStructParamDef
ShaderStructParamDef
v9.0 (2011)
このオブジェクトはShaderParamDefオブジェクト専用です。このシェーダ定義に含まれるサブエレメント(ShaderStructParamDef.SubParamDefs。サブパラメータ定義のリストをShaderParamDefContainerに戻す)にアクセスできます。
ShaderStructParamDef オブジェクトを作成するには、siShaderDataTypeStructureシェーダパラメータタイプをShaderParamDefContainer.AddParamDefまたはShaderParamDefContainer.AddArrayParamDefの呼び出し時に指定します。
'
' This example demonstrates how to create a dynamic shader definition
' with an input struct parameter and then populate it with some
' sub parameters.
'
set app = Application
set oShaderDef = XSIFactory.CreateShaderDef("MyParser", "MyStructDemo", 1, 0)
oShaderDef.AddShaderFamily "mrTexture"
app.LogMessage "Shader definition name: " & oShaderDef.Name
' Set up shader parameter definition options to use with new input parameter
set oShaderInParamDefOptions = XSIFactory.CreateShaderParamDefOptions()
oShaderInParamDefOptions.SetAnimatable False
oShaderInParamDefOptions.SetTexturable True
oShaderInParamDefOptions.SetInspectable True
oShaderInParamDefOptions.SetShortName "Main Struct"
' Add input parameter to definition
set oInputParams = oShaderDef.InputParamDefs
oInputParams.AddParamDef "main", siShaderDataTypeStructure, oShaderInParamDefOptions
' Now print info to see what we have
for each oShaderInParamDef in oShaderDef.InputParamDefs.Definitions
app.LogMessage "Input parameter name: " & oShaderInParamDef.DisplayName
app.LogMessage vbTab & "ClassName: " & app.ClassName(oShaderInParamDef)
app.LogMessage vbTab & "DataType: " & oShaderInParamDef.DataType
if oShaderInParamDef.DataType = siShaderDataTypeStructure then
set oSubContainer = oShaderInParamDef.SubParamDefs
oShaderInParamDefOptions.SetShortName "SubColor 1"
oSubContainer.AddParamDef "sub1", siShaderDataTypeColor4, oShaderInParamDefOptions
oShaderInParamDefOptions.SetShortName "SubColor 2"
oSubContainer.AddParamDef "sub2", siShaderDataTypeString, oShaderInParamDefOptions
oShaderInParamDefOptions.SetShortName "SubColor 3"
oSubContainer.AddParamDef "sub3", siShaderDataTypeGradient, oShaderInParamDefOptions
app.LogMessage vbTab & "Number of sub parameter definitions: " & oShaderInParamDef.SubParamDefs.Definitions.Count
for each oSubParamDef in oShaderInParamDef.SubParamDefs.Definitions
app.LogMessage vbTab & "Sub parameter name: " & oSubParamDef.DisplayName
app.LogMessage vbTab & vbTab & "ClassName: " & app.ClassName(oSubParamDef)
app.LogMessage vbTab & vbTab & "DataType: " & oSubParamDef.DataType
next
end if
next
' Expected result:
' INFO : Shader definition name: MyParser.MyStructDemo.1.0
' INFO : Input parameter name: Main Struct
' INFO : ClassName: ShaderStructParamDef
' INFO : DataType: 64
' INFO : Number of sub parameter definitions: 3
' INFO : Sub parameter name: SubColor 1
' INFO : ClassName: ShaderStructParamDef
' INFO : DataType: 10
' INFO : Sub parameter name: SubColor 2
' INFO : ClassName: ShaderParamDef
' INFO : DataType: 11
' INFO : Sub parameter name: SubColor 3
' INFO : ClassName: ShaderStructParamDef
' INFO : DataType: 18 |