Create map for pipeline objects to store child programs

This commit is contained in:
Baldur Karlsson
2014-06-24 15:53:06 +01:00
parent 12019c3844
commit e778ad7b74
2 changed files with 22 additions and 1 deletions
+16
View File
@@ -188,9 +188,25 @@ class WrappedOpenGL
GLuint colOutProg;
bool linked;
};
struct PipelineData
{
PipelineData() {}
struct ProgramUse
{
ProgramUse(ResourceId id_, GLbitfield use_) : id(id_), use(use_) {}
ResourceId id;
GLbitfield use;
};
vector<ProgramUse> programs;
};
map<ResourceId, ShaderData> m_Shaders;
map<ResourceId, ProgramData> m_Programs;
map<ResourceId, PipelineData> m_Pipelines;
GLuint m_FakeBB_FBO;
GLuint m_FakeBB_Color;
@@ -551,8 +551,13 @@ bool WrappedOpenGL::Serialise_glUseProgramStages(GLuint pipeline, GLbitfield sta
if(m_State < WRITING)
{
ResourceId livePipeId = GetResourceManager()->GetLiveID(pipe);
ResourceId liveProgId = GetResourceManager()->GetLiveID(prog);
m_Pipelines[livePipeId].programs.push_back(PipelineData::ProgramUse(liveProgId, Stages));
m_Real.glUseProgramStages(GetResourceManager()->GetLiveResource(pipe).name,
stages,
Stages,
GetResourceManager()->GetLiveResource(prog).name);
}