首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xamarin.iOS GPUImage :如何在Xamarin.iOS中使用自定义着色器文件创建GPUImageTwoInputFilter

Xamarin.iOS GPUImage :如何在Xamarin.iOS中使用自定义着色器文件创建GPUImageTwoInputFilter
EN

Stack Overflow用户
提问于 2016-08-06 17:08:36
回答 1查看 198关注 0票数 0

我想在xamarin.iOS中创建一个带有自定义着色器文件的GPUImageTwoInputFilter。我正在使用GPUImage组件。

代码语言:javascript
复制
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中传递着色器文件

EN

回答 1

Stack Overflow用户

发布于 2016-08-06 21:27:02

将自定义片段着色器(.fsh)添加到Xamarin.iOS应用程序包中,作为BundleResource的构建类型。

然后通过GPUImageFilter.FromFragmentShaderFile加载它

注意:请勿包含文件扩展名,否则将在应用程序输出/日志中显示"Failed to load vertex shader“

代码语言:javascript
复制
var filter = GPUImageFilter.FromFragmentShaderFile ("StackOverflowShader");

或将片段着色器作为字符串嵌入:

代码语言:javascript
复制
    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加载它

代码语言:javascript
复制
var filter = GPUImageFilter.FromFragmentShaderString(fragShaderString);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38802523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档