本文整理汇总了C++中GpuProgramPtr::isNull方法的典型用法代码示例。如果您正苦于以下问题:C++ GpuProgramPtr::isNull方法的具体用法?C++ GpuProgramPtr::isNull怎么用?C++ GpuProgramPtr::isNull使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类GpuProgramPtr
的用法示例。
在下文中一共展示了GpuProgramPtr::isNull方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: generateVertexShader
virtual GpuProgramPtr generateVertexShader(Perm permutation)
{
String programName = "DeferredShading/post/";
if (permutation & LightMaterialGenerator::MI_DIRECTIONAL)
{
programName += "vs";
}
else
{
programName += "LightMaterial_vs";
}
GpuProgramPtr ptr = HighLevelGpuProgramManager::getSingleton().getByName(programName);
assert(!ptr.isNull());
return ptr;
}
示例2: loadFromString
//---------------------------------------------------------------------------
GpuProgramPtr GpuProgramManager::loadFromString(const String& name,
const String& groupName, const String& code,
GpuProgramType gptype, const String& syntaxCode)
{
GpuProgramPtr prg;
{
OGRE_LOCK_AUTO_MUTEX;
prg = getByName(name, groupName);
if (prg.isNull())
{
prg = createProgramFromString(name, groupName, code, gptype, syntaxCode);
}
}
prg->load();
return prg;
}
示例3: createGpuPrograms
//-----------------------------------------------------------------------------
bool ProgramManager::createGpuPrograms(ProgramSet* programSet)
{
// Before we start we need to make sure that the pixel shader input
// parameters are the same as the vertex output, this required by
// shader models 4 and 5.
// This change may incrase the number of register used in older shader
// models - this is why the check is present here.
bool isVs4 = GpuProgramManager::getSingleton().isSyntaxSupported("vs_4_0");
if (isVs4)
{
synchronizePixelnToBeVertexOut(programSet);
}
// Grab the matching writer.
const String& language = ShaderGenerator::getSingleton().getTargetLanguage();
ProgramWriterIterator itWriter = mProgramWritersMap.find(language);
ProgramWriter* programWriter = NULL;
// No writer found -> create new one.
if (itWriter == mProgramWritersMap.end())
{
programWriter = ProgramWriterManager::getSingletonPtr()->createProgramWriter(language);
mProgramWritersMap[language] = programWriter;
}
else
{
programWriter = itWriter->second;
}
ProgramProcessorIterator itProcessor = mProgramProcessorsMap.find(language);
ProgramProcessor* programProcessor = NULL;
if (itProcessor == mProgramProcessorsMap.end())
{
OGRE_EXCEPT(Exception::ERR_DUPLICATE_ITEM,
"Could not find processor for language '" + language,
"ProgramManager::createGpuPrograms");
}
programProcessor = itProcessor->second;
bool success;
// Call the pre creation of GPU programs method.
success = programProcessor->preCreateGpuPrograms(programSet);
if (success == false)
return false;
// Create the vertex shader program.
GpuProgramPtr vsGpuProgram;
vsGpuProgram = createGpuProgram(programSet->getCpuVertexProgram(),
programWriter,
language,
ShaderGenerator::getSingleton().getVertexShaderProfiles(),
ShaderGenerator::getSingleton().getVertexShaderProfilesList(),
ShaderGenerator::getSingleton().getShaderCachePath());
if (vsGpuProgram.isNull())
return false;
programSet->setGpuVertexProgram(vsGpuProgram);
//update flags
programSet->getGpuVertexProgram()->setSkeletalAnimationIncluded(
programSet->getCpuVertexProgram()->getSkeletalAnimationIncluded());
// Create the fragment shader program.
GpuProgramPtr psGpuProgram;
psGpuProgram = createGpuProgram(programSet->getCpuFragmentProgram(),
programWriter,
language,
ShaderGenerator::getSingleton().getFragmentShaderProfiles(),
ShaderGenerator::getSingleton().getFragmentShaderProfilesList(),
ShaderGenerator::getSingleton().getShaderCachePath());
if (psGpuProgram.isNull())
return false;
programSet->setGpuFragmentProgram(psGpuProgram);
// Call the post creation of GPU programs method.
success = programProcessor->postCreateGpuPrograms(programSet);
if (success == false)
return false;
return true;
}