mCallStack.PushCall("GetCustomFragmentPrefix", "");
return "#extension GL_OES_EGL_image_external:require\n";
};
+ inline virtual bool ApplyNativeFragmentShader(std::string& shader)
+ {
+ mCallStack.PushCall("ApplyNativeFragmentShader", "");
+ shader = "#extension GL_OES_EGL_image_external:require\n" + shader;
+
+ //Get custom sampler type name
+ const char* customSamplerTypename = GetCustomSamplerTypename();
+ if(customSamplerTypename)
+ {
+ size_t samplerPosition = shader.find("sampler2D");
+ if(samplerPosition != std::string::npos)
+ {
+ shader.replace(samplerPosition, strlen("sampler2D"), customSamplerTypename);
+ }
+ }
+ return true;
+ };
inline const char* GetCustomSamplerTypename() const override
{
mCallStack.PushCall("GetCustomSamplerTypename", "");
return "";
}
+bool NativeImageSource::ApplyNativeFragmentShader(std::string& shader)
+{
+ return true;
+}
+
const char* NativeImageSource::GetCustomSamplerTypename() const
{
return "";
mNativeTexture = Dali::Texture::New(*nativeImageSourcePtr);
Dali::Geometry geometry = VisualFactoryCache::CreateQuadGeometry();
- Dali::Shader shader = CreateShader(nativeImageSourcePtr->GetCustomFragmentPrefix());
+ Dali::Shader shader = CreateShader(nativeImageSourcePtr);
Dali::TextureSet textureSet = Dali::TextureSet::New();
textureSet.SetTexture(0u, mNativeTexture);
mCameraPlayer.SetDisplayArea(mDisplayArea);
}
-Dali::Shader CameraView::CreateShader(const char* fragmentPrefix)
+Dali::Shader CameraView::CreateShader(Dali::NativeImageSourcePtr nativeImageSourcePtr)
{
- std::string fragmentShader = fragmentPrefix;
- std::string vertexShader;
+ std::string vertexShader = SHADER_VIDEO_VIEW_TEXTURE_VERT.data();
+ std::string fragmentShader = SHADER_VIDEO_VIEW_TEXTURE_FRAG.data();
- vertexShader = SHADER_VIDEO_VIEW_TEXTURE_VERT.data();
- fragmentShader += SHADER_VIDEO_VIEW_TEXTURE_FRAG.data();
+ nativeImageSourcePtr->ApplyNativeFragmentShader(fragmentShader);
return Dali::Shader::New(vertexShader, fragmentShader);
}
/**
* @brief CreateShader for native image target
- * @param[in] fragmentPrefix prefix of fragment
+ * @param[in] nativeImageSourcePtr to apply custom fragment prefix
* @return Returns the shader for NativeImage.
*/
- Dali::Shader CreateShader(const char* fragmentPrefix);
+ Dali::Shader CreateShader(Dali::NativeImageSourcePtr nativeImageSourcePtr);
private:
Dali::CameraPlayer mCameraPlayer;