Use latest set of shaders attached to program for initial states

* If multiple shaders are attached to a program only use the latest set as they
  override anything that came before.
This commit is contained in:
baldurk
2019-01-16 13:23:40 +00:00
parent 27a4353ffa
commit adbf24da77
+10 -3
View File
@@ -1187,10 +1187,17 @@ bool GLResourceManager::Serialise_InitialState(SerialiserType &ser, ResourceId r
GLuint initProg = GL.glCreateProgram();
uint32_t numShaders = 0;
std::vector<std::string> vertexOutputs;
for(size_t i = 0; i < details.shaders.size(); i++)
for(size_t i = 0; i < ARRAY_COUNT(details.stageShaders); i++)
{
const auto &shadDetails = m_Driver->m_Shaders[details.shaders[i]];
if(details.stageShaders[i] == ResourceId())
continue;
numShaders++;
const auto &shadDetails = m_Driver->m_Shaders[details.stageShaders[i]];
GLuint shad = GL.glCreateShader(shadDetails.type);
@@ -1282,7 +1289,7 @@ bool GLResourceManager::Serialise_InitialState(SerialiserType &ser, ResourceId r
if(status == 0)
{
if(details.shaders.size() == 0)
if(numShaders == 0)
{
RDCWARN("No shaders attached to program");
}