to improved the CreateDefaultVertexShader()

This commit is contained in:
hyzboy 2019-12-14 13:42:16 +08:00
parent e61ed1d146
commit 0aaec981b2
3 changed files with 19 additions and 15 deletions

View File

@ -39,6 +39,8 @@ protected:
void AddInput (bool mj,const UTF8String &n,const param::ParamType &pt);
void AddOutput (const UTF8String &n,const param::ParamType &pt);
public:
param::InputParam * GetInput (const UTF8String &n) ///<根据名称获取输入参数
{return GetListObject(input_params_by_name,n);}
@ -61,7 +63,7 @@ public: //参数相关
InputParamList & GetInputParamList (){return input_params;}
OutputParamList & GetOutputParamList (){return output_params;}
virtual bool JoinInput (const UTF8String &,node::Node *,const UTF8String &);
virtual bool JoinInput (const UTF8String &,node::Node *,param::OutputParam *);
public: //参数相关

View File

@ -7,20 +7,24 @@
BEGIN_SHADER_NAMESPACE
namespace
{
#define SHADER_VERTEX_INPUT_POSITION "Position"
#define SHADER_VERTEX_INPUT_STREAM_PARAM_NAME "Position" //<顶点数据输入流,输出参数名称
#define SHADER_VERTEX_POSITION_INPUT_PARAM_NAME "Position" //<顶点shader最终节点输入参数名称
//**********************************************************************注:它们两个名字一样只是碰巧****************
bool CreateDefaultVertexShader()
{
node::VertexFinished vs_fin_node; //创建一个vs最终节点
node::VertexFinished vs_fin_node; //创建一个vs最终节点
//创建一个顶点输入节点
node::VertexInput ni( SHADER_VERTEX_INPUT_POSITION, //该节点shader名称
param::ParamType::Float3); //该节点数据类型
//创建一个顶点输入节点
node::VertexInput ni( SHADER_VERTEX_INPUT_STREAM_PARAM_NAME, //该节点shader名称
param::ParamType::Float3); //该节点数据类型
//对接顶点输入节点到VS最终节点
vs_fin_node.JoinInput( SHADER_VERTEX_INPUT_POSITION, //最终节点名称
&ni, //要接入的节点
SHADER_VERTEX_INPUT_POSITION); //要入节点的输出参数名称 (注:这里只是碰巧名字一样,所以共用一个宏)
param::OutputParam *op=ni.GetOutput(SHADER_VERTEX_INPUT_STREAM_PARAM_NAME); //获取节点中的输出参数
//对接顶点输入节点到VS最终节点
vs_fin_node.JoinInput( SHADER_VERTEX_POSITION_INPUT_PARAM_NAME, //最终节点中这个输入参数的名称
&ni,op); //要接入的节点以及它的输出参数
ShaderMaker vs_maker(&vs_fin_node);

View File

@ -19,14 +19,12 @@ void Node::AddOutput(const UTF8String &n,const param::ParamType &pt)
output_params_by_name.Add(n,op);
}
bool Node::JoinInput(const UTF8String &param_name,node::Node *n,const UTF8String &op_name)
bool Node::JoinInput(const UTF8String &param_name,node::Node *n,param::OutputParam *op)
{
if(param_name.IsEmpty()||!n)
if(param_name.IsEmpty()||!n||op)
return(false);
param::OutputParam *op=n->GetOutput(op_name);
if(!op)
if(!n->IsOutput(op))
return(false);
param::InputParam *ip=GetInput(param_name);