本文整理汇总了C++中ParameterPtr::isNull方法的典型用法代码示例。如果您正苦于以下问题:C++ ParameterPtr::isNull方法的具体用法?C++ ParameterPtr::isNull怎么用?C++ ParameterPtr::isNull使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ParameterPtr
的用法示例。
在下文中一共展示了ParameterPtr::isNull方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: synchronizePixelnToBeVertexOut
//-----------------------------------------------------------------------
void ProgramManager::synchronizePixelnToBeVertexOut( ProgramSet* programSet )
{
Program* vsProgram = programSet->getCpuVertexProgram();
Program* psProgram = programSet->getCpuFragmentProgram();
// first find the vertex shader
ShaderFunctionConstIterator itFunction ;
Function* vertexMain = NULL;
Function* pixelMain = NULL;
// find vertex shader main
{
const ShaderFunctionList& functionList = vsProgram->getFunctions();
for (itFunction=functionList.begin(); itFunction != functionList.end(); ++itFunction)
{
Function* curFunction = *itFunction;
if (curFunction->getFunctionType() == Function::FFT_VS_MAIN)
{
vertexMain = curFunction;
break;
}
}
}
// find pixel shader main
{
const ShaderFunctionList& functionList = psProgram->getFunctions();
for (itFunction=functionList.begin(); itFunction != functionList.end(); ++itFunction)
{
Function* curFunction = *itFunction;
if (curFunction->getFunctionType() == Function::FFT_PS_MAIN)
{
pixelMain = curFunction;
break;
}
}
}
// save the pixel program original input parameters
const ShaderParameterList pixelOriginalInParams = pixelMain->getInputParameters();
// set the pixel Input to be the same as the vertex prog output
pixelMain->deleteAllInputParameters();
// Loop the vertex shader output parameters and make sure that
// all of them exist in the pixel shader input.
// If the parameter type exist in the original output - use it
// If the parameter doesn't exist - use the parameter from the
// vertex shader input.
// The order will be based on the vertex shader parameters order
// Write output parameters.
ShaderParameterConstIterator it;
const ShaderParameterList& outParams = vertexMain->getOutputParameters();
for (it=outParams.begin(); it != outParams.end(); ++it)
{
ParameterPtr curOutParemter = *it;
ParameterPtr paramToAdd = Function::getParameterBySemantic(
pixelOriginalInParams,
curOutParemter->getSemantic(),
curOutParemter->getIndex());
if (paramToAdd.isNull())
{
// param not found - we will add the one from the vertex shader
paramToAdd = curOutParemter;
}
pixelMain->addInputParameter(paramToAdd);
}
}