知道着色器的人都会知道一个东西,那就是着色器分为顶点着色器与片元着色器。在移动端真正渲染到手机屏幕上的无非是一些颜色值,但是一个片元是大于一个像素的,一个片元可能包含多个像素,当然一个片元所包含的像素的多少是与手机屏幕分辨率有关系的。

那么我们该怎么操纵像素,我想对我整个场景渲染出来的一些东西进行像素操做。比如说,都知道在CPU端,如果你使用了MSAA多重采样抗锯齿,那么对于手机性能来说,是很拖累的。所以我想把这个多重采样抗锯齿的东西转移到GPU端来,不在CPU端去堵塞渲染的主线程了,那么这个时候就需要对这幅FBO纹理的像素进行操作。一副图片是有自己的宽高的,其宽高说的是这幅图片的像素多少,宽100,高100,那么,这幅图片一共拥有100*100个像素。我们知道了这副纹理的像素大小了。我们在片元着色器,纹理采样的坐标为ST,对应到纹理的像素大小,我们对应过来,就是1/S,1/T,这就是每个像素的大小,我们知道了像素的大小,那么就可以根据当前的采样的纹理的坐标值,计算出来其周围八个像素或者更多像素的采样值,我们取到这些采样值后,进行一些算法运算就可以了,比如说我可以进行多重采样抗锯齿。不懂MSAA抗锯齿原理的可以自己看看书。根据器原理,我们就可以做出来很多精细化的对像素操作的特效渲染。

代码(片元着色器):

float stepS = 1/TexWidth;

float stepT = 1/TexHeight;

float currS = TexCoords.s;

float currT = TexCoords.t;

color0 = texture2D(Texture, vec2(currS,currT));

color1 = texture2D(Texture,vec2(currS + stepS,currT + stepT));//后面依次类推,可以计算出来当前像素周边的像素。

取到了多个像素后,就可以进行模糊,锐化,灰度,渐变,抗锯齿等等这些关于纹理或者FBO纹理特效的开发了。也可以自己套进去一个椭圆的公式,那么后期渲染出来的图片就变成一个有圆形轨迹的图片了,当然,如果加入OpenCV识别到人脸,那么也可以对人脸进行变形,变大,变成啥都行,用matlab训练出来一套算法,这些都不在困难。

OpenGL/ES关于像素渲染的更多相关文章

  1. 详解 OpenGL ES 2.x 渲染流程

    khronos官方对OpenGL ES的描述如下: OpenGL ES is a royalty-free, cross-platform API for rendering advanced 2D ...

  2. Android OpenGL ES 离屏渲染(offscreen render)

    通常在Android上使用OpenGL ES,都是希望把渲染后的结果显示在屏幕上,例如图片处理.模型显示等.这种情况下,只需要使用Android API中提供的GLSurfaceView类和Rende ...

  3. OpenGL ES应用开发实践指南:iOS卷

    <OpenGL ES应用开发实践指南:iOS卷> 基本信息 原书名:Learning OpenGL ES for iOS:A Hands-On Guide to Modern 3D Gra ...

  4. 【Android Developers Training】 62. 搭建一个OpenGL ES环境

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  5. [cocos2d-x]OPENGL ES支持的像素格式

    OPENGL ES最多支持32位颜色值. 支持的像素格式有以下几种: 客户端格式 GL格式 GL数据类型 字节数 RGBA8888 GL_RGBA GL_UNSIGNED_BYTE 4 RGB888 ...

  6. 一步步实现windows版ijkplayer系列文章之六——SDL2源码分析之OpenGL ES在windows上的渲染过程

    一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...

  7. 深度剖析OpenGL ES中的多线程和多窗口渲染技术

    由 创新网小编 于 星期五, 2014-04-11 14:56 发表 移动设备中的CPU和GPU已经变得很强大,到处都是配备一个或多个高分辨率屏幕的设备,需要使用带有图形驱动器的复杂交互也日益增加.在 ...

  8. 基于Cocos2d-x学习OpenGL ES 2.0系列——OpenGL ES渲染之LayerColor(8)

    在前面文章中讲述了Cocos2d-x引擎OpenGL渲染准备Shader方面,本文主要讲解使用LayerColor来讲述OpenGL的渲染过程. 1.LayerColor对象创建 添加LayerCol ...

  9. 基于Cocos2d-x学习OpenGL ES 2.0系列——OpenGL ES渲染之Shader准备(7)

    Cocos2d-x底层图形绘制是使用OpenGL ES协议的.OpenGL ES是什么呢? OpenGL ES(OpenGl for Embedded System)是OpenGL三维图形API的子集 ...

随机推荐

  1. PIKACHU之文件包含漏洞

    PIKUCHU靶场之文件包含 一.file inclusion(local) 实验源码: <?php /** * Created by runner.han * There is nothing ...

  2. Termux劣质的入门指南

    直入主题: 1.1 下载安装 Google下载(有条件的用!) F-droid下载(建议使用!) 也可以去酷安下载! 1.2 配置 apt update && apt upgrade ...

  3. RocketMQ 原理:消息存储、高可用、消息重试、消息幂等性

    目录 消息存储 消息存储方式 非持久化 持久化 消息存储介质 消息存储与读写方式 消息存储结构 刷盘机制 同步刷盘 异步刷盘 小结 高可用 高可用实现 主从复制 负载均衡 消息重试 顺序消息重试 无序 ...

  4. C# 在PDF文档中应用多种不同字体

    在PDF文档中,可绘制不同字体样式.不同语言的文字,可通过使用Standard字体.TrueType字体.CJK字体或者自定义(私有)等字体类型.下面通过C#程序代码来展示如何实现使用以上类型的字体来 ...

  5. VUE3 之 插槽的使用 - 这个系列的教程通俗易懂,适合新手

    1. 概述 非理性定律告诉我们: 人们总是习惯于以情感去判断眼前的事物,非理性的去做决定. 对于长远的利益,人们更愿意去选择短期的利益. 因此在做决定前要让自己冷静,理性的分析,让自己看的更远. 言归 ...

  6. Typora + picgo + Chevereto 优雅地上传图片

    需求:由于经常使用typora写文章,但是配合picgo使用的sm.ms图床,github图床等,速度不稳定,因此我们想要利用自己的服务器搭建自己的图床,将自己文章的图片上传到自己的服务器中,优雅地写 ...

  7. Linux 总结

    查看端口 lsof -i:8000 查看进程 ps -ef  |  grep  python netstat -tunlp |grep 端口号 拷贝 cp 文件 生成文件名 做软连接找到目标文件目录 ...

  8. 中文分词,自然语言处理器NLP。 六月份版本已上线。

    一,  没有对比,就没有伤害,我们分词的优势在哪里?走一波测试. 跑一下CaCl2,看看效果. 二   想要分什么词汇,自己自定义即可. 目前每个月都会出一个新的版本,主要是和金融相关的词汇. 这是6 ...

  9. JDBC 连接DRUID 连接池!

    一.1.创建一个floder目录,[名称lib] 2. 导入mysql.jar包和 druid.jar 包.---------->bulid path 二.创建  sourcefolder 目录 ...

  10. Datawhale 人工智能培养方案

    版本号:V0.9 阅读须知 每个专业方向对应一个课程表格 课程表格里的课程排列顺序即为本培养方案推荐的学习顺序 诚挚欢迎为本培养方案贡献课程,有意向的同学请联系Datawhale开源项目管理委员会 本 ...