cocos2d 3.X Shader 变暗和变灰
转自http://www.waitingfy.com/archives/1741
1.为了节约一张图引发的Shader使用
我们注意到这个游戏当中经常使用一些按钮,美术会给两张图,一张稍微暗点,表示按下的状态。但是这样的图一多起来,就比较占用资源。Sprite更改颜色无法表现出这样的效果。想起来Shader可以。
2.变灰是比较常见
Cocos2d-x中有一个变灰的例子,这里就列出shader代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#ifdef GL_ES precision mediump float ; #endif varying vec4 v_fragmentColor; varying vec2 v_texCoord; void main( void ) { vec4 c = texture2D(CC_Texture0, v_texCoord); gl_FragColor.xyz = vec3(0.2126*c.r + 0.7152*c.g + 0.0722*c.b); gl_FragColor.w = c.w; } |
那几个系数相加会等于1,不同的调整会有不同的效果。效果图:
第一张就是变灰的效果图,但是离第3张的效果还有距离啊。
3.变暗的原理
搞过图形学的应该会比较容易知道,我也是搜索了才知道,我们知道白色是1或者255,黑色是0. 当一个颜色越接近0表示越接近黑色。也就是说,只要把每个像素的颜色乘以一个比1小的数,就会有变暗的效果了!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
#ifdef GL_ES precision mediump float ; #endif varying vec4 v_fragmentColor; varying vec2 v_texCoord; void main( void ) { vec4 c = texture2D(CC_Texture0, v_texCoord); float greyNum = 0.75; vec4 final = c; final.r = c.r * greyNum; final.g = c.g * greyNum; final.b = c.b * greyNum; gl_FragColor = final; } |
我这里设置的是0.75
最终效果图:
已经非常接近第3张我们需要的目标图了。这样就可以省下一半的图片了。不知道渲染速度会不会慢。
来源网址:http://www.waitingfy.com/archives/1741
cocos2d 3.X Shader 变暗和变灰的更多相关文章
- opengl之vsh、fsh简易介绍+cocos2dx 3.0 shader 变灰
认识着色器 理解OpenGL渲染管线,对于学习OpenGL非常重要.下面是OpenGL渲染管线的示意图:(图中淡蓝色区域是可以编程的阶段) 此图是从wiki中拿过来的,OpenGL的渲染管线主要包括: ...
- [原]quick2.25精灵变灰
由于quick2.25没有导出shader相应的接口,所以2.25无法直接使用shader. 本文简单介绍如何导出相应接口,同时教大家使用shader 实现精灵变灰 一.编写静态函数,以供导出使用(直 ...
- NGUI 图片变灰
效果图 1.先准备好一个变灰shader.代码如下 Shader "Custom/Gray" { Properties { _MainTex ("Base (RGB), ...
- 【全面完美方案】iPhone 4S WiFi变灰 DIY修复方式
这是我在一位台湾网友usaretama发表的一篇帖子中看到的,原帖我发表在维维网 如果你有WiFi开关变灰不能切换.WiFi遇到搜不到AP或搜到了连不上,那您就要注意这篇了. 家人的 iPhone 4 ...
- cocos2d-x 保持屏幕点亮及自动变灰
很早之前遇到的问题,现在记录一下.有一家Android渠道(抱歉,时间太长了已经记不大清楚是哪一家了 oppo/联想/酷派?)在我们提交新版本时拒绝了,理由是:手机背光状态下,屏幕不会自动变灰. 这里 ...
- 怎么让让整个HTML页面变灰
怎么让让整个HTML页面变灰 其实很简单,我们只需要一句话. html {filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1 ...
- CSS使图片变灰
为了悼念,各大网站都纷纷将自己的站点颜色调灰,就连图片也一样,到底如何实现的呢,请看下面的代码. 〈img src="http://hovertree.com/hvtimg/201512/f ...
- UIImageView变灰
1.UIImageView圆角 CALayer *l = [cell.imgAvatarImage layer]; [l setMasksToBounds:YES]; [l setCornerRadi ...
- UIButton 点击后变灰
+(UIButton *)getBlueButtonWithTitle:(NSString *)aTitle{ UIButton *button = [UIButton buttonWithType: ...
随机推荐
- 循序渐进Python3(十)-- 2 -- SqlAlchemy
ORM 对象关系映射(英语:Object Relation Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类 ...
- 循序渐进Python3(十)-- 4 -- paramiko
paramiko模块,基于SSH用于连接远程服务器并执行相关操作. 使用 (1)SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: , ))transport.connect( ...
- 运行easy_install安装python相关程序时提示failed to create process
运行easy_install安装python相关程序时提示failed to create process,因为安装了两个python,卸载了的那个目录没删除,删除了另外的python目录后这个问题就 ...
- InstallShield Limited Edition for Visual Studio 2013 图文教程
http://www.wuleba.com/?p=23892 原文链接
- IntelliJ设置鼠标悬浮提示和修改快捷键
IntelliJ设置鼠标悬浮提示和修改快捷键 设置鼠标悬浮提示 修改快捷键 进入设置菜单 删除原来的快捷键(注:你可以选择保留原来的快捷键,同时使用两个快捷键) Good Luck
- Redis基础(转)
ServiceStack.Redis实践 Redis的C#客户端我选择的是ServiceStack.Redis,相比Booksleeve redis-sharp等方案,它提供了一整套从 Redi ...
- linux 搭建svn
1 安装SVN 官网下载:http://subversion.apache.org/packages.html SVN客户端:TortoiseSVN,官网下载:http://tort ...
- HDU1075
题目大意: 给你一本火星词典,每个火星单词对应一个英文单词. 然后给你一篇火星文章,要求你翻译成英文. 要求如下: 如果这个火星单词用英文单词可以表示,就翻译成英文,如果没有这个单词,就原样输出.遇到 ...
- Splinter学习--初探1,模拟百度搜索
Splinter是以Selenium, PhantomJS 和 zope.testbrowser为基础构建的web自动化测试工具,基本原理同selenium 支持的浏览器包括:Chrome, Fire ...
- brew 任何命令 都 报 synatx error
brew 忽然不能用了,任何命令都报 syntax error near unexpected token `<<<' 解决方案 cd $(brew --prefix) git fe ...