GPUImge
2015-06-19 16:24
447 查看
一、给glsl中的fragmentshader添加uniform变量
因为GUPImage已经做好了很多基础内容,所以有些地方直接调用函数即可。
向fragment中添加Uniform变量,首先需要往里面添加属性名称,即在initializeAttributes调用GLProgram类的addAttribute方法:
这个函数会调用glBindAttribLocation将这个属性绑定到一个索引值上。
接着在initWithVertexShaderFromString(因为initWithFragmenShaderString中会调用这个方法)中获取索引值
uniformIndex函数会调用glGetUniformLocation函数获取"testUniform"的索引值。
最后在renderToTextureWithVertices函数里面进行赋值,赋值时主要使用索引值
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]),而是可以设置的高宽,目前不太清楚具体如何设置。
因为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]),而是可以设置的高宽,目前不太清楚具体如何设置。
相关文章推荐
- cPickle.load(f) ValueError: insecure string pickle错误问题
- GUI_Download的Codepage参数
- uva 1151 - Buy or Build poj 2784 Buy or Build(最小生成树)
- uwsgi invalid request block size: 的解决办法
- cannot set options after executing query
- UIView常用的一些方法小记之setNeedsDisplay和setNeedsLayout
- 压缩UI深度的代码实现
- ABP 初探 之基于EasyUI的CURD
- iOS开发UI篇—CAlayer层的属性
- Uva - 12166 - Equilibrium Mobile
- IOS UITableViewCell 分割左对齐处理
- Uva - 12166 - Equilibrium Mobile
- 自定义Activity标题栏(Title bar)和窗体显示状态操作(requestWindowFeature()的应用)
- Android安装应用失败UID 和 PID
- HTML Dom querySelector
- MonkyTalk学习-5-TestSuite
- moqui框架介绍
- 传智播客网页平面UI入驻武汉校区
- WebUI-自用
- 清除Windows Genuine Advantage