GPUImge
来源:互联网 发布:软件服务商 编辑:程序博客网 时间:2024/06/16 21:48
一、给glsl中的fragmentshader添加uniform变量
因为GUPImage已经做好了很多基础内容,所以有些地方直接调用函数即可。
向fragment中添加Uniform变量,首先需要往里面添加属性名称,即在initializeAttributes调用GLProgram类的addAttribute方法:
[filterProgram addAttribute:@"testUniform";
这个函数会调用glBindAttribLocation将这个属性绑定到一个索引值上。
接着在initWithVertexShaderFromString(因为initWithFragmenShaderString中会调用这个方法)中获取索引值
testUniformIndex = [filterProgram uniformIndex:@"testUniform"];
uniformIndex函数会调用glGetUniformLocation函数获取"testUniform"的索引值。
最后在renderToTextureWithVertices函数里面进行赋值,赋值时主要使用索引值
glUniform1i(testUniformIndex, 1);
glUniform函数有多种形式,可以根据自己的需求选择,接着就可以将"testUniform"添加到fragmentshader里面进行调用了。
二、OpenGL ES的坐标系以及glsl中的一些参数
1、纹素
纹素即texel,为texture2D方法第二个参数使用的基本单位。texelSizeX = 1.0 / fWidth,这儿的fWidth不是手机窗口的宽度,而是图片原始的宽度或者摄像头输出(这个不太确定)的宽度。所以纹理的坐标都是0-1.0,不管多宽或者多高。
2、gl_FragCoord
因为所有的纹理相关的处理都在fragment shader里面,而这里面有时候也需要对坐标进行处理,但gl_FragCoord虽说是相对于窗口的二维坐标,但这并非真是的物理坐标(即屏幕的像素大小,[[UIScreen mainScreen] bounds]),而是可以设置的高宽,目前不太清楚具体如何设置。
0 0
- GPUImge
- GPUImge学习日记(3) 之滤镜组合使用
- [UOJ 110][APIO 2015]Bali Sculptures(按位DP)
- idea配置springmvc
- java小悟1
- 为经典版eclipse增加web and JavaEE插件
- EditText有内容时显示清空按钮,无内容时不显示
- GPUImge
- 技术演绎之 [ java ] java标识符
- 百度地图删除标尺,logo,缩放按钮
- SAP Batch Job 备注
- 最短路径 Dijkstra算法
- vs2012 error c4996: This function or variable may be unsafe
- 关于Android 和 JS 交互时调用不成功的问题
- C# WinForm捕获未处理的异常实例解析
- opencv调用笔记本摄像头程序