nodes: revert shader ID to string

Much easier to manage this way and fixes a compile issue on several
platforms.
This commit is contained in:
itsmattkc
2020-06-12 16:02:29 +10:00
parent 204372170f
commit af5097bf5f
18 changed files with 35 additions and 43 deletions
+4 -5
View File
@@ -182,12 +182,11 @@ QVariant OpenGLProxy::PreCachedFrameToValue(FramePtr frame)
return QVariant::fromValue(texture_cache_.Get(ctx_, frame));
}
OpenGLShaderPtr OpenGLProxy::ResolveShaderFromCache(const Node *node, const QByteArray &shader_id)
OpenGLShaderPtr OpenGLProxy::ResolveShaderFromCache(const Node *node, const QString &shader_id)
{
// Make a composite of the node ID and the shader ID (if applicable)
QByteArray id = node->id().toUtf8();
id.append(shader_id);
OpenGLShaderPtr shader = shader_cache_.value(id);
QString full_shader_id = QStringLiteral("%1:%2").arg(node->id(), shader_id);
OpenGLShaderPtr shader = shader_cache_.value(full_shader_id);
if (!shader) {
// Since we have shader code, compile it now
@@ -213,7 +212,7 @@ OpenGLShaderPtr OpenGLProxy::ResolveShaderFromCache(const Node *node, const QByt
&& shader->addShaderFromSourceCode(QOpenGLShader::Fragment, frag_code)
&& shader->addShaderFromSourceCode(QOpenGLShader::Vertex, vert_code)
&& shader->link()) {
shader_cache_.insert(shader_id, shader);
shader_cache_.insert(full_shader_id, shader);
} else {
qWarning() << "Failed to compile shader for" << node->id();
shader = nullptr;
+2 -2
View File
@@ -84,7 +84,7 @@ public slots:
QVariant PreCachedFrameToValue(OLIVE_NAMESPACE::FramePtr frame);
private:
OpenGLShaderPtr ResolveShaderFromCache(const Node* node, const QByteArray& shader_id);
OpenGLShaderPtr ResolveShaderFromCache(const Node* node, const QString &shader_id);
QOpenGLContext* ctx_;
QOffscreenSurface surface_;
@@ -97,7 +97,7 @@ private:
OpenGLShaderPtr copy_pipeline_;
QHash<QByteArray, OpenGLShaderPtr> shader_cache_;
QHash<QString, OpenGLShaderPtr> shader_cache_;
OpenGLTextureCache texture_cache_;
+3 -3
View File
@@ -93,12 +93,12 @@ public:
alpha_channel_required_ = false;
}
const QByteArray& GetShaderID() const
const QString& GetShaderID() const
{
return id_;
}
void SetShaderID(const QByteArray& id)
void SetShaderID(const QString& id)
{
id_ = id;
}
@@ -130,7 +130,7 @@ public:
}
private:
QByteArray id_;
QString id_;
int iterations_;