Example #1
0
//----------------------------------------------------------------------------
void Shader::Save (OutStream& target) const
{
	WM5_BEGIN_DEBUG_STREAM_SAVE(target);

	Object::Save(target);

	target.WriteStringW(mNumInputs, mInputName);
	target.WriteEnumN(mNumInputs, mInputType);
	target.WriteEnumN(mNumInputs, mInputSemantic);
	target.WriteStringW(mNumOutputs, mOutputName);
	target.WriteEnumN(mNumOutputs, mOutputType);
	target.WriteEnumN(mNumOutputs, mOutputSemantic);
	target.WriteStringW(mNumConstants, mConstantName);
	target.WriteN(mNumConstants, mNumRegistersUsed);
	target.WriteStringW(mNumSamplers, mSamplerName);
	target.WriteEnumN(mNumSamplers, mSamplerType);
	target.WriteEnumN(mNumSamplers, mFilter);
	target.WriteEnumN(mNumSamplers, mCoordinate[0]);
	target.WriteEnumN(mNumSamplers, mCoordinate[1]);
	target.WriteEnumN(mNumSamplers, mCoordinate[2]);
	target.WriteN(mNumSamplers, mLodBias);
	target.WriteN(mNumSamplers, mAnisotropy);
	target.WriteAggregateN(mNumSamplers, mBorderColor);

	// On load, test this against MAX_PROFILES just in case a user increases
	// MAX_PROFILES and tries to load old data sets.
	target.Write((int)MAX_PROFILES);
	target.WriteBool(mProfileOwner);
	if (mProfileOwner)
	{
		for (int i = 0; i < MAX_PROFILES; ++i)
		{
			target.WriteN(mNumConstants, mBaseRegister[i]);
			target.WriteN(mNumSamplers, mTextureUnit[i]);
			target.WriteString(*mProgram[i]);
		}
	}

	WM5_END_DEBUG_STREAM_SAVE(Shader, target);
}