If Nodes only have the one output, we don't need to do so much differentiation between them. Previous iteration used outputs as like a distinct function within a Node (e.g. length output would return one result, buffer output would produce a different result - each run different code to produce their results). Now in this iteration, it's more accurate to say a Node is just one function (which seems more appropriate for a node system anyway).
29 lines
578 B
C++
29 lines
578 B
C++
#include "openglshadercache.h"
|
|
|
|
#include "node/node.h"
|
|
|
|
void OpenGLShaderCache::Clear()
|
|
{
|
|
compiled_nodes_.clear();
|
|
}
|
|
|
|
void OpenGLShaderCache::AddShader(Node *output, OpenGLShaderPtr shader)
|
|
{
|
|
compiled_nodes_.insert(GenerateShaderID(output), shader);
|
|
}
|
|
|
|
OpenGLShaderPtr OpenGLShaderCache::GetShader(Node *output)
|
|
{
|
|
return compiled_nodes_.value(GenerateShaderID(output));
|
|
}
|
|
|
|
QString OpenGLShaderCache::GenerateShaderID(Node *output)
|
|
{
|
|
return output->id();
|
|
}
|
|
|
|
bool OpenGLShaderCache::HasShader(Node *output)
|
|
{
|
|
return compiled_nodes_.contains(GenerateShaderID(output));
|
|
}
|