3.3 An Abstract Rendering API 187
m_pqDevice->CreateVertexShader(
(DWORD*)(pkCompiledShader->GetBufferPointer()),
&pkResource->ID);
if (pkCompiledShader)
{
pkCompiledShader->Release();
}
if (pkErrors)
{
pkErrors->Release();
}
}
The software renderer implementation is
void SoftRenderer::OnLoadVProgram (ResourceIdentifier*& rpkID,
VertexProgram* pkVProgram)
{
VProgramID* pkResource = WM4_NEW VProgramID;
rpkID = pkResource;
pkResource->OAttr = pkVProgram->GetOutputAttributes();
stdext::hash_map<std::string,VProgram>::iterator pkIter =
ms_pkVPrograms->find(pkVProgram->GetName());
pkResource->ID = pkIter->second;
}
Releasing a resource is handled similarly.
void Renderer::ReleaseVProgram (Bindable* pkVProgram)
{
ResourceIdentifier* pkID = pkVProgram->GetIdentifier(this); ...