Пример #1
0
BaseProgramRenderPass::~BaseProgramRenderPass()
{
	if (mProgramState->Program()!=0)
	{
		Render::Instance().DeleteProgram(mProgramState->Program());
		mProgramState->SetProgram(0);
		mIsLinked=false;
	}

	SAFE_DELETE_DICTIONARY_VALUE(mUniforms);
	SAFE_DELETE_DICTIONARY_VALUE(mAttributes);
}
Пример #2
0
void BaseProgramRenderPass::Link()
{
	RETURN_IF(mProgramState->Program()==0||mIsLinked);
	SAFE_DELETE_DICTIONARY_VALUE(mUniforms);
	SAFE_DELETE_DICTIONARY_VALUE(mAttributes);

	uint program=mProgramState->Program();
	Render::Instance().LinkProgram(program);
	int outLinkStatus=Render::Instance().GetProgramStatus(program,GraphicsProgramStatus::LinkStatus);

	if (!outLinkStatus)
	{
		//link error
		int outInfoLogLength=Render::Instance().GetProgramStatus(program,GraphicsProgramStatus::InfoLogLength);

		HeapString infoLog((size_t)outInfoLogLength+1,true);
		Render::Instance().GetProgramInfoLog(program,infoLog);
		Log::FormatError("Failed to link effect:{}",infoLog.Buffer());
		Uninitialize();
		return ;
	}

	Render::Instance().ValidateProgram(program);
	int outValidateStatus=Render::Instance().GetProgramStatus(program,GraphicsProgramStatus::ValidateStatus);

	if (!outValidateStatus)
	{
		//link error
		int outInfoLogLength=Render::Instance().GetProgramStatus(program,GraphicsProgramStatus::InfoLogLength);

		HeapString infoLog((size_t)outInfoLogLength+1,true);
		Render::Instance().GetProgramInfoLog(program,infoLog);
		Log::FormatError("Failed to validate effect:{}",infoLog.Buffer());
		Uninitialize();
		return;
	}
	RenderStateMachine::Instance().Push(mProgramState);

	//add all uniforms
	uint uniformCount=(uint)Render::Instance().GetProgramStatus(program,GraphicsProgramStatus::ActiveUniformCount);
	uint maxUniformNameLength=(uint)Render::Instance().GetProgramStatus(program,GraphicsProgramStatus::MaxActiveUniformNameLength);
	HeapString outName((size_t)maxUniformNameLength+1,true);
	FOR_EACH_SIZE(i,uniformCount)
	{
		int outSize;
		uint outDataType;
		Render::Instance().GetActiveUniformName(program,static_cast<uint>(i),outSize,outDataType,outName);
		int index= Render::Instance().GetUniformLocation(program,outName);	//NOTE: Cannot use i as index
		ShaderUniform* uniform=new ShaderUniform(this,index,outName,(GraphicsUniformDataType)outDataType);
		mUniforms.Add(outName,uniform);
	}
Пример #3
0
bool FileStorage::Uninitialize()
{
	mRootDir.Uninitialize();
	mCoderChain.Uninitialize();

	SAFE_DELETE_DICTIONARY_VALUE(mOtherCoderChains);
	return true;
}
Пример #4
0
bool FileSystem::Uninitialize()
{
	SAFE_DELETE_DICTIONARY_VALUE(mTagItems);
	SAFE_DELETE_COLLECTION(mPackages);

	mMemoryPackage = nullptr;
	mPackages.Clear();
	mCurrentTag = PublishTarget::MatchAll;
	mSortedTagItems.Clear();
	mValidTagList.Clear();
	return true;
}
Пример #5
0
bool FileStorage::OnLoaded()
{
	mRootDir.Initialize(this, nullptr);
	SAFE_DELETE_DICTIONARY_VALUE(mOtherCoderChains);

	for (const auto& coderRule : mCodeRules)
	{
		CoderList coders = coderRule.Value;
		if (!mOtherCoderChains.ContainsKey(coders))
		{
			CoderChain* coderChain = new CoderChain();
			coderChain->Initialize(coders, Key());
			mOtherCoderChains.Add(coders, coderChain);
		}
	}

	return true;
}
Пример #6
0
bool SirenMachine::Uninitialize()
{
	SAFE_DELETE_DICTIONARY_VALUE(mAssemblies);
	return true;
}
Пример #7
0
FileMapTagItem::~FileMapTagItem()
{
	SAFE_DELETE_DICTIONARY_VALUE(mItems);
}
Пример #8
0
FrameBuffer::~FrameBuffer()
{
	SAFE_DELETE_DICTIONARY_VALUE(mRenderBuffers);
}
Пример #9
0
BaseFontModel::~BaseFontModel(void)
{
    SAFE_RELEASE(mFont);
    RemoveAllMeshes();
    SAFE_DELETE_DICTIONARY_VALUE(mCachesMeshes);
}
Пример #10
0
ShaderConstantInitializer::~ShaderConstantInitializer( void )
{
	SAFE_DELETE_DICTIONARY_VALUE(mInitializerDict);
}
Пример #11
0
void SirenAssembly::Unload()
{
	SAFE_DELETE_DICTIONARY_VALUE(mTypes);
	SAFE_DELETE_COLLECTION(mFunctions);
}
Пример #12
0
NodeFactory::~NodeFactory()
{
	SAFE_DELETE_DICTIONARY_VALUE(mClassDict);
}