Added missing statement with sfShader_createFromX

We can now call sfShader_createFromFile/Memory/Stream with only a
geometry file/memory/stream.
This commit is contained in:
Luhrel authored and Lukas Dürrenberger committed 2022-10-27 22:11:25 +02:00
1 parent 1402537900
commit 0c79d19b48
1 file changed
+25 -1
+25 -1
View File
@@ -59,11 +59,19 @@ sfShader* sfShader_createFromFile(const char* vertexShaderFilename, const char*
} }
} }
else else
{
if (!vertexShaderFilename && !fragmentShaderFilename)
{
// geometry shader only
success = shader->This.loadFromFile(geometryShaderFilename, sf::Shader::Geometry);
}
else
{ {
// vertex + geometry + fragment shaders // vertex + geometry + fragment shaders
success = shader->This.loadFromFile(vertexShaderFilename, geometryShaderFilename, fragmentShaderFilename); success = shader->This.loadFromFile(vertexShaderFilename, geometryShaderFilename, fragmentShaderFilename);
} }
} }
}
if (!success) if (!success)
{ {
@@ -101,11 +109,19 @@ sfShader* sfShader_createFromMemory(const char* vertexShader, const char* geomet
} }
} }
else else
{
if (!vertexShader && !fragmentShader)
{
// geometry shader only
success = shader->This.loadFromMemory(geometryShader, sf::Shader::Geometry);
}
else
{ {
// vertex + geometry + fragment shaders // vertex + geometry + fragment shaders
success = shader->This.loadFromMemory(vertexShader, geometryShader, fragmentShader); success = shader->This.loadFromMemory(vertexShader, geometryShader, fragmentShader);
} }
} }
}
if (!success) if (!success)
{ {
@@ -147,14 +163,22 @@ sfShader* sfShader_createFromStream(sfInputStream* vertexShaderStream, sfInputSt
} }
} }
else else
{
CallbackStream geometryStream(geometryShaderStream);
if (!vertexShaderStream && !fragmentShaderStream)
{
// geometry shader only
success = shader->This.loadFromStream(geometryStream, sf::Shader::Geometry);
}
else
{ {
// vertex + geometry + fragment shaders // vertex + geometry + fragment shaders
CallbackStream vertexStream(vertexShaderStream); CallbackStream vertexStream(vertexShaderStream);
CallbackStream geometryStream(geometryShaderStream);
CallbackStream fragmentStream(fragmentShaderStream); CallbackStream fragmentStream(fragmentShaderStream);
success = shader->This.loadFromStream(vertexStream, geometryStream, fragmentStream); success = shader->This.loadFromStream(vertexStream, geometryStream, fragmentStream);
} }
} }
}
if (!success) if (!success)
{ {