const Ogre::GpuProgramPtr& MaterialGenerator::GetFragmentShader(Perm permutation)
{
    ProgramMap::iterator i = mFsMap.find(permutation);
    if (i != mFsMap.end())
    {
        return i->second;
    }
    else
    {
        // Create it
        mFsMap[permutation] = GenerateFragmentShader(permutation);
        return mFsMap[permutation];
    }
}
示例#2
0
Framework::OpenGl::ProgramPtr CGSH_OpenGL::GenerateShader(const SHADERCAPS& caps)
{
	auto vertexShader = GenerateVertexShader(caps);
	auto fragmentShader = GenerateFragmentShader(caps);

	auto result = std::make_shared<Framework::OpenGl::CProgram>();

	result->AttachShader(vertexShader);
	result->AttachShader(fragmentShader);

	bool linkResult = result->Link();
	assert(linkResult);

	assert(glGetError() == GL_NO_ERROR);

	return result;
}