iOS编程高性能之路-GPU着色器实现实时滤镜(3)
(2012-09-11 19:35:53)再利用以下代码就可以转成texture 渲染在opengl view上
glGenTextures(1, &videoFrameTexture);
glBindTexture(GL_TEXTURE_2D,
glTexParameteri(GL_TEXTURE_2D,
glTexParameteri(GL_TEXTURE_2D,
// This is necessary for non-power-of-two textures
glTexParameteri(GL_TEXTURE_2D,
glTexParameteri(GL_TEXTURE_2D,
// Using BGRA extension to pull in video frame data directly
glTexImage2D(GL_TEXTURE_2D,
通过从opengl es模板中的shader加载函数我们就可以在上一篇所将的vsh fsh中对像素点进行修改。这时我们可以看到操作三通道,四通道都是轻而易举 没有降帧。
当然对与高阶的滤镜效果 我们可以自己生成噪点纹理 或是 其他效果的纹理做叠加,这个是我之前自己创建的油画纹理,原理很简单 就是在当前像素某个范围内随机找出一个点 用这个点的颜色来替换当前点 从而造成一种扩散的效果
int
int
int
UInt8
int
int
for
}
glGenTextures(1, &randomTexture);
glBindTexture(GL_TEXTURE_2D,
glTexParameteri(GL_TEXTURE_2D,
glTexParameteri(GL_TEXTURE_2D,
glTexParameteri(GL_TEXTURE_2D,
glTexParameteri(GL_TEXTURE_2D,
glTexImage2D(GL_TEXTURE_2D,
free(pixels);