我想在xamarin.iOS中创建一个带有自定义着色器文件的GPUImageTwoInputFilter。我正在使用GPUImage组件。
var stillCamera = new GPUImageStillCamera ();
var filter1 = new GPUImageTwoInputFilter();
stillCamera.AddTarget(filter1);
var internalSourcePicture1 = new GPUImagePicture(UIImage.FromFile("image.png").CGImage,true);
internalSourcePicture1.AddTarget(filter1);
internalSourcePicture1.ProcessImage();但是不知道如何在GPUImageTwoInputFilter中传递着色器文件
发布于 2016-08-06 21:27:02
将自定义片段着色器(.fsh)添加到Xamarin.iOS应用程序包中,作为BundleResource的构建类型。
然后通过GPUImageFilter.FromFragmentShaderFile加载它
注意:请勿包含文件扩展名,否则将在应用程序输出/日志中显示"Failed to load vertex shader“
var filter = GPUImageFilter.FromFragmentShaderFile ("StackOverflowShader");或将片段着色器作为字符串嵌入:
fragShaderString = @"
varying highp vec2 textureCoordinate;
varying highp vec2 textureCoordinate2;
uniform sampler2D inputImageTexture;
uniform sampler2D inputImageTexture2;
void main()
{
lowp vec4 base = texture2D(inputImageTexture, textureCoordinate);
lowp vec4 overlayer = texture2D(inputImageTexture2, textureCoordinate2);
gl_FragColor = vec4(min(overlayer.rgb * base.a, base.rgb * overlayer.a) + overlayer.rgb * (1.0 - base.a) + base.rgb * (1.0 - overlayer.a), 1.0);
}
";并通过FromFragmentShaderString加载它
var filter = GPUImageFilter.FromFragmentShaderString(fragShaderString);https://stackoverflow.com/questions/38802523
复制相似问题