记录一下Cocos2d-x中动态纹理CCRenderTexture
的各种应用,实现截屏、阴影等等
使用CCRenderTexture
需要做以下5步:
- 创建一个新的
CCRenderTexture
. 这里,你可以指定将要创建的纹理的宽度和高度。 - 调用
CCRenderTexture:begin
. 这个方法会启动OpenGL,并且接下来,任何绘图的命令都会渲染到CCRenderTexture
里面去,而不是画到屏幕上。 - 绘制纹理. 你可以使用原始的
OpenGL
调用来绘图,或者你也可以使用cocos2d对象里面已经定义好的visit
方法。(这个visit方法就会调用一些opengl命令来绘制cocos2d对象) - 调用
CCRenderTexture:end
. 这个方法会渲染纹理,并且会关闭渲染至CCRenderTexture
的通道。 - 从生成的纹理中创建一个
sprite
. 你现在可以用CCRenderTexture
的sprite.texture
属性来轻松创建新的精灵了。
截取当前屏幕图片
1 | --[[ |
绘制精灵的影子
1 | --[[ |
绘制动态精灵
注意,我们这里不是调用的CCRenderTexture:begin
方法,而是调用另外一个较方便的方法beginWithClear:g:b:a:
,这个方法可以用给定的颜色来清除纹理的背景,相当于设置画布的颜色。
1 | -(CCSprite *)spriteWithColor:(ccColor4F)bgColor textureSize:(float)textureSize { |
randomBrightColor
方法是一个辅助方法,用来创建一种随机颜色。注意,这里使用ccc4B(因此,我们能够在0-255的范围内指定R/G/B/A值),同时确保至少有一个颜色分量是大于192的,这样的话,我们就不会得到较暗的颜色。
然后,genBackground
调用我们之前写的spriteWithColor
方法,同时把它加屏幕中央。
至于init
函数,它调用genBackground
方法,同时激活touches
事件,这样的话,你就可以通过点击屏幕来获得另外的随机背景了。
编译并运行,这样你每一次点击屏幕,你都可以得到一张不同的单色背景图片啦!
参考链接
How To Create Dynamic Textures with CCRenderTexture in Cocos2D 2.X
(译)如何使用CCRenderTexture来创建动态纹理
扫描二维码或在微信中搜索 KeepMovingXin
版权声明
KeepMoving by KP_小新 采用 创作共用保留署名-非商业-禁止演绎4.0国际许可证
Copyright © 2018 KeepMoving. All rights reserved.