* @param[in] vertexSource Source code for vertex program
* @param[in] fragmentSource Source code for fragment program
*/
- ShaderData(const std::string& vertexSource, const std::string& fragmentSource, const Dali::Shader::Hint::Value hints)
+ ShaderData(std::string vertexSource, std::string fragmentSource, const Dali::Shader::Hint::Value hints)
: mShaderHash( -1 ),
- mVertexShader(vertexSource),
- mFragmentShader(fragmentSource),
+ mVertexShader(std::move(vertexSource)),
+ mFragmentShader(std::move(fragmentSource)),
mHints(hints)
{ }
}
}
-ShaderDataPtr ShaderFactory::Load( const std::string& vertexSource, const std::string& fragmentSource, const Dali::Shader::Hint::Value hints, size_t& shaderHash )
+ShaderDataPtr ShaderFactory::Load( std::string_view vertexSource, std::string_view fragmentSource, const Dali::Shader::Hint::Value hints, size_t& shaderHash )
{
// Work out the filename for the binary that the glsl source will be compiled and linked to:
- shaderHash = CalculateHash( vertexSource.c_str(), fragmentSource.c_str() );
+ shaderHash = CalculateHash( vertexSource.data(), fragmentSource.data() );
std::string binaryShaderFilename;
shaderBinaryFilename( shaderHash, binaryShaderFilename );
if( shaderData.Get() == nullptr )
{
// Allocate the structure that returns the loaded shader:
- shaderData = new ShaderData( vertexSource, fragmentSource, hints );
+ shaderData = new ShaderData( std::string(vertexSource), std::string(fragmentSource), hints );
shaderData->SetHashValue( shaderHash );
shaderData->GetBuffer().Clear();
* a compiled shader program binary if one could be found, else an
* empty binary buffer cleared to size zero.
*/
- Internal::ShaderDataPtr Load( const std::string& vertexSource, const std::string& fragmentSource, const Dali::Shader::Hint::Value hints, size_t& shaderHash );
+ Internal::ShaderDataPtr Load( std::string_view vertexSource, std::string_view fragmentSource, const Dali::Shader::Hint::Value hints, size_t& shaderHash );
/**
* @brief Saves shader to memory cache and filesystem.
} // unnamed namespace
-ShaderPtr Shader::New( const std::string& vertexShader,
- const std::string& fragmentShader,
+ShaderPtr Shader::New( std::string_view vertexShader,
+ std::string_view fragmentShader,
Dali::Shader::Hint::Value hints )
{
// create scene object first so it's guaranteed to exist for the event side
{
}
-void Shader::SetShader( const std::string& vertexSource,
- const std::string& fragmentSource,
+void Shader::SetShader( std::string_view vertexSource,
+ std::string_view fragmentSource,
Dali::Shader::Hint::Value hints )
{
// Try to load a pre-compiled shader binary for the source pair:
/**
* @copydoc Dali::Shader::New()
*/
- static ShaderPtr New( const std::string& vertexShader,
- const std::string& fragmentShader,
+ static ShaderPtr New( std::string_view vertexShader,
+ std::string_view fragmentShader,
Dali::Shader::Hint::Value hints );
/**
/**
* Second stage initialization
*/
- void SetShader( const std::string& vertexShader, const std::string& fragmentShader, Dali::Shader::Hint::Value hints );
+ void SetShader( std::string_view vertexShader, std::string_view fragmentShader, Dali::Shader::Hint::Value hints );
protected:
/**
namespace Dali
{
-Shader Shader::New(const std::string& vertexShader,
- const std::string& fragmentShader,
+Shader Shader::New(std::string_view vertexShader,
+ std::string_view fragmentShader,
Hint::Value hints)
{
Internal::ShaderPtr renderer = Internal::Shader::New(vertexShader, fragmentShader, hints);
* @param[in] hints Hints to define the geometry of the rendered object
* @return A handle to a shader effect
*/
- static Shader New(const std::string& vertexShader,
- const std::string& fragmentShader,
+ static Shader New(std::string_view vertexShader,
+ std::string_view fragmentShader,
Hint::Value hints = Hint::NONE);
/**