cocos源码分析--RenderTexture】的更多相关文章

cocos中RenderTexture主要用来实现截屏,然后把截取出来的图片保存到磁盘中,除了保存图片和渲染纹理,它还可以得到一些预渲染结果,并将这些结果作为一种纹理数据. 例如我们可以用RGB5_A1的纹理格式来保存一些Alpha值,这些Alpha值表示一种类型的蒙版,它们可以作为多重纹理数据被用在其他元素中进行过滤处理 .再比如我们可以通过 深度和模版测试产生一些颜色值来决定其他元素的绘制行为.本文主要分析最常用的用途,截屏并保存. 比如代码如下: auto layer2 = LayerCo…
在OpenGL 绘制过程中,与帧缓冲有关的是模版,深度测试,混合操作.模版测试使应用程序可以定义一个遮罩,在遮罩内的片段将被保留或者丢弃,在遮罩外的片段操作行为则相反.深度测试用来剔除那些被场景遮挡的片段,但是对于透明物体可能有问题,需要注意绘制顺序,本文主要结合ClippingNode分析下模版测试. 具体关于模版测试的文章有很多,这里就不再重复了,直接开始分析cocos中模版测试的应用. ClippingNode是一个Node元素,它接受另外一个Node来作为模版,这个模版用来影响Clipp…
精灵是2D游戏中最重要的元素,可以用来构成游戏中的元素,如人物,建筑等,用Sprite类表示,他将一张纹理的一部分或者全部矩形区域绘制到屏幕上.我们可以使用精灵表来减少OpenGL ES 绘制的次数,可以使用Sprite来播放动画,也可以设置Sprite的颜色,与场景中其他元素的混合模式等.另外一些复杂的元素,如地图,粒子系统,字体等,都是基于Sprite构建的.通过指定一张纹理和该纹理上的一个区域,就可以创建一个Sprite对象. Sprite类定义了几个重载方法以方便的创建Sprite对象.…
1开始,先创建一个LayerColor Scene *scene=Scene::create(); director->runWithScene(scene); //目标 auto layer = LayerColor::create(Color4B(, , , ), , ); //主要的步骤就是设置了node 的 _position layer->setPosition(,); scene->addChild(layer); 2 看一下LayerColor的初始化方法 bool Lay…
本文写一个使用动态更新属性变量的自定义着色器.在这个例子中,小图标的位置根据手指的触摸而移动,以屏幕重点为参照物,屏幕中向下的部分根据手指的点击乘以一个绿色的颜色值,向上的部分乘以一个红色的颜色值. 可以把计算过程分为三个步骤 1 利用手指的点击计算出小图标当前的位置,并将位置传入到顶点着色器中,因为他对每个顶点都是一样的,所以我们可以使用一个全局变量u_center 2 顶点着色器根据顶点与小球的距离,计算出一个-1-1的权重值,这个值作为易变变量v_high 传递给片段着色器.大于0表示手指…
SpriteBatchNode继承Node,并实现了TextureProtocol接口,重写了Node的addChild()方法,visit()方法以及draw()方法. addChild()方法限制其子元素只能是Sprite, 并且子元素与SpriteBatchNode必须使用同一个Texture2D对象. visit()用于阻止元素向下遍历,将所有子元素的绘制工作交给自己处理. draw()方法使用BatchNodeCommand将绘制命令发送到RenderQueue,从而对所有子元素进行批…
使用规则 节点的渲染顺序跟节点的三个成员变量有关(_localZOrder._globalZOrder._orderOfArrival)分别对应三个设置函数setLocalZOrder.setGlobalZOrder.setOrderOfArrival.无论是_localZOrder._globalZOrder._orderOfArrival都是越大的越后渲染,越小的越先渲染,而且有_globalZOrder的优先级大于_localZOrder的优先级大于_orderOfArrival的优先级.…
在游戏中,触摸是最基本的,必不可少的.Cocos2d-x 3.x中定义了一系列事件,同时也定义了负责监听这些事件的监听器,另外,cocos定义了事件分发类,用来将事件派发出去以便可以实现相应的事件. 触摸事件 Event Cocos2d-x 3.x定义了事件基类Event,基于Event,引擎派生出几种事件: enum class Type { TOUCH, // 触摸事件 KEYBOARD, // 键盘事件 ACCELERATION, // 加速度事件 MOUSE,// 鼠标事件 FOCUS,…
ABP是一套非常优秀的web应用程序架构,适合用来搭建集中式架构的web应用程序. 整个Abp的Infrastructure是以Abp这个package为核心模块(core)+15个模块(module).其中13个依赖于Abp这个核心包.另外两个包(FluentMigration,Web.Resources)相对独立 Abp.AutoMapper: 实现对象之间的自动映射. Abp.EntityFramework:通过EntityFramework实现数据访问层. Abp.FluentMigra…
1. 引言     在红黑树--算法导论(15)中学习了红黑树的原理.本来打算自己来试着实现一下,然而在看了JDK(1.8.0)TreeMap的源码后恍然发现原来它就是利用红黑树实现的(很惭愧学了Java这么久,也写过一些小项目,也使用过TreeMap无数次,但到现在才明白它的实现原理).因此本着"不要重复造轮子"的思想,就用这篇博客来记录分析TreeMap源码的过程,也顺便瞅一瞅HashMap. 2. 继承结构 (1) 继承结构 下面是HashMap与TreeMap的继承结构: pu…