OpenGL/ES关于像素渲染
知道着色器的人都会知道一个东西,那就是着色器分为顶点着色器与片元着色器。在移动端真正渲染到手机屏幕上的无非是一些颜色值,但是一个片元是大于一个像素的,一个片元可能包含多个像素,当然一个片元所包含的像素的多少是与手机屏幕分辨率有关系的。
那么我们该怎么操纵像素,我想对我整个场景渲染出来的一些东西进行像素操做。比如说,都知道在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关于像素渲染的更多相关文章
- 详解 OpenGL ES 2.x 渲染流程
khronos官方对OpenGL ES的描述如下: OpenGL ES is a royalty-free, cross-platform API for rendering advanced 2D ...
- Android OpenGL ES 离屏渲染(offscreen render)
通常在Android上使用OpenGL ES,都是希望把渲染后的结果显示在屏幕上,例如图片处理.模型显示等.这种情况下,只需要使用Android API中提供的GLSurfaceView类和Rende ...
- OpenGL ES应用开发实践指南:iOS卷
<OpenGL ES应用开发实践指南:iOS卷> 基本信息 原书名:Learning OpenGL ES for iOS:A Hands-On Guide to Modern 3D Gra ...
- 【Android Developers Training】 62. 搭建一个OpenGL ES环境
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- [cocos2d-x]OPENGL ES支持的像素格式
OPENGL ES最多支持32位颜色值. 支持的像素格式有以下几种: 客户端格式 GL格式 GL数据类型 字节数 RGBA8888 GL_RGBA GL_UNSIGNED_BYTE 4 RGB888 ...
- 一步步实现windows版ijkplayer系列文章之六——SDL2源码分析之OpenGL ES在windows上的渲染过程
一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...
- 深度剖析OpenGL ES中的多线程和多窗口渲染技术
由 创新网小编 于 星期五, 2014-04-11 14:56 发表 移动设备中的CPU和GPU已经变得很强大,到处都是配备一个或多个高分辨率屏幕的设备,需要使用带有图形驱动器的复杂交互也日益增加.在 ...
- 基于Cocos2d-x学习OpenGL ES 2.0系列——OpenGL ES渲染之LayerColor(8)
在前面文章中讲述了Cocos2d-x引擎OpenGL渲染准备Shader方面,本文主要讲解使用LayerColor来讲述OpenGL的渲染过程. 1.LayerColor对象创建 添加LayerCol ...
- 基于Cocos2d-x学习OpenGL ES 2.0系列——OpenGL ES渲染之Shader准备(7)
Cocos2d-x底层图形绘制是使用OpenGL ES协议的.OpenGL ES是什么呢? OpenGL ES(OpenGl for Embedded System)是OpenGL三维图形API的子集 ...
随机推荐
- Linux下Julia安装
1.找到官网,执行 wget https://julialang-s3.julialang.org/bin/linux/x64/1.4/julia-1.4.0-linux-x86_64.tar.gz ...
- 毫米转像素dpi
public static double MillimeterToPixel_X(double length) //length是毫米,1厘米=10毫米 { System.Windows.Forms. ...
- 🏆【Alibaba中间件技术系列】「RocketMQ技术专题」系统服务底层原理以及高性能存储设计分析
设计背景 消息中间件的本身定义来考虑,应该尽量减少对于外部第三方中间件的依赖.一般来说依赖的外部系统越多,也会使得本身的设计越复杂,采用文件系统作为消息存储的方式. RocketMQ存储机制 消息中间 ...
- 传统的DOM渲染方式?
1.什么是DOM渲染? 所谓的DOM渲染是指的是对于浏览器中展现给用户的DOM文档的生成的过程. 2.DOM渲染的过程,大致可以分为三个阶段: --纯后端渲染 --纯前端渲染 --服务端的JS渲染结合 ...
- 怎么重载网卡?ip修改 HHS服务器
目录 一:目录结构知识详述 1.网卡配置文件 2,ip修改 3.重载网卡信息 4.关闭网络管理器(因为已经有了network)所有要关闭NetworkManager不然会发生冲突 5.判断SSH服务是 ...
- MySQL表空间结构
在Innodb中,我们可以指定一张表的数据是保存在独立表空间还是系统表空间,这个参数是:innodb_file_per_table 如果我们设置这个参数的值为0,那么一个表将使用系统表空间来保存表的数 ...
- HTML 基础1
HTML 超文本标记语言 文件后缀html,htm 标签成对出现:开始标签--结束标签 元素内容位于开始标签--结束标签之间(可以有空内容) 空元素<a/> 大小写不敏感 元素,属性 &l ...
- spring 整合shiro框架 模拟登录控制器。
一.导入shiro jar包. 我在maven项目中,将常用的jar包都放在里面. <?xml version="1.0" encoding="UTF-8&qu ...
- ABC209 E Shiritori
考虑对这个问题进行转化: 显然我们只关注每个串前三个棋子和后三个棋子,并且根据题目的特性,我们可以将任意的三个字符看作点,将一个字符串看作连接两个点的边,这样我们得到了一张点数为 \(52 ^ 3\) ...
- EKS助力小白实践云原生——通过k8s部署wordpress应用
目前云原生在大厂已经有了充分的实践,也逐渐向小厂以及非互联网公司推广.适逢12月20日,腾讯云原生[燎原社]精心打造了云原生在线技术工坊,让零基础的同学也能快速入门和实践 Docker 和 Kuber ...