PuzzleSDK
EffectSprite类 参考
+ 类 EffectSprite 继承关系图:
+ EffectSprite 的协作图:

Public 成员函数

void setEffect (Effect *effect)
 
void addEffect (Effect *effect, ssize_t order)
 
void draw (Renderer *renderer, const Mat4 &transform, uint32_t flags) override
 

静态 Public 成员函数

static EffectSpritecreate (const std::string &filename)
 

Protected 成员函数

 EffectSprite ()
 
 ~EffectSprite ()
 

Protected 属性

std::vector< std::tuple< ssize_t, Effect *, QuadCommand > > _effects
 
Effect_defaultEffect
 

详细描述

在文件 ShaderTest2.cpp76 行定义.

构造及析构函数说明

◆ EffectSprite()

EffectSprite::EffectSprite ( )
inlineprotected

在文件 ShaderTest2.cpp154 行定义.

154 : _defaultEffect(nullptr)
155 {
156 _effects.reserve(2);
157 }
Effect * _defaultEffect
std::vector< std::tuple< ssize_t, Effect *, QuadCommand > > _effects

引用了 _effects.

◆ ~EffectSprite()

EffectSprite::~EffectSprite ( )
inlineprotected

在文件 ShaderTest2.cpp158 行定义.

158 {
159 for(auto &tuple : _effects) {
160 std::get<1>(tuple)->release();
161 }
162 CC_SAFE_RELEASE(_defaultEffect);
163 }

引用了 _defaultEffect , 以及 _effects.

成员函数说明

◆ addEffect()

void EffectSprite::addEffect ( Effect effect,
ssize_t  order 
)
inline

在文件 ShaderTest2.cpp100 行定义.

100 {
101 effect->retain();
102 effect->setTarget(this);
103
104 _effects.push_back(std::make_tuple(order,effect,QuadCommand()));
105
106 std::sort(std::begin(_effects), std::end(_effects), tuple_sort);
107 }
static int tuple_sort(const std::tuple< ssize_t, Effect *, QuadCommand > &tuple1, const std::tuple< ssize_t, Effect *, QuadCommand > &tuple2)
Definition: ShaderTest2.cpp:57
virtual void setTarget(EffectSprite *sprite)
Definition: ShaderTest2.h:49

引用了 _effects, Effect::setTarget() , 以及 tuple_sort().

+ 函数调用图:

◆ create()

static EffectSprite * EffectSprite::create ( const std::string &  filename)
inlinestatic

在文件 ShaderTest2.cpp79 行定义.

79 {
80 auto ret = new (std::nothrow) EffectSprite;
81 if(ret && ret->initWithFile(filename)) {
82 ret->autorelease();
83 return ret;
84 }
85 CC_SAFE_RELEASE(ret);
86 return nullptr;
87 }

被这些函数引用 EffectSpriteTest::init() , 以及 EffectSpriteLamp::init().

+ 这是这个函数的调用关系图:

◆ draw()

void EffectSprite::draw ( Renderer *  renderer,
const Mat4 &  transform,
uint32_t  flags 
)
inlineoverride

在文件 ShaderTest2.cpp109 行定义.

110 {
111#if CC_USE_CULLING
112 // Don't do calculate the culling if the transform was not updated
113 _insideBounds = (flags & FLAGS_TRANSFORM_DIRTY) ? renderer->checkVisibility(transform, _contentSize) : _insideBounds;
114
115 if(_insideBounds)
116#endif
117 {
118 // negative effects: order < 0
119 int idx=0;
120 for(auto &effect : _effects) {
121
122 if(std::get<0>(effect) >=0)
123 break;
124 auto* programState = std::get<1>(effect)->getProgramState();
125 if (programState)
126 {
127 QuadCommand &q = std::get<2>(effect);
128 q.init(_globalZOrder, _texture, _blendFunc, &_quad, 1, transform, flags);
129 updateUniforms(programState);
130 renderer->addCommand(&q);
131 }
132 idx++;
133 }
134
135 // normal effect: order == 0
136 _trianglesCommand.init(_globalZOrder, _texture, _blendFunc, _polyInfo.triangles, transform, flags);
137
138 updateUniforms(_trianglesCommand.getPipelineDescriptor().programState);
139 renderer->addCommand(&_trianglesCommand);
140
141 // positive effects: order >= 0
142 for(auto it = std::begin(_effects)+idx; it != std::end(_effects); ++it) {
143 QuadCommand &q = std::get<2>(*it);
144 auto* programState = std::get<1>(*it)->getProgramState();
145 updateUniforms(programState);
146 q.init(_globalZOrder, _texture, _blendFunc, &_quad, 1, transform, flags);
147 q.getPipelineDescriptor().programState = programState;
148 renderer->addCommand(&q);
149 idx++;
150 }
151 }
152 }
static void updateUniforms(backend::ProgramState *programState)
Definition: ShaderTest2.cpp:63

引用了 _effects , 以及 updateUniforms().

+ 函数调用图:

◆ setEffect()

void EffectSprite::setEffect ( Effect effect)
inline

在文件 ShaderTest2.cpp89 行定义.

89 {
90 if(_defaultEffect != effect) {
91 effect->setTarget(this);
92
93 CC_SAFE_RELEASE(_defaultEffect);
94 _defaultEffect = effect;
95 CC_SAFE_RETAIN(_defaultEffect);
96
97 setProgramState(_defaultEffect->getProgramState());
98 }
99 }
cocos2d::backend::ProgramState * getProgramState() const
Definition: ShaderTest2.h:48

引用了 _defaultEffect, Effect::getProgramState() , 以及 Effect::setTarget().

被这些函数引用 EffectSpriteTest::init() , 以及 EffectSpriteLamp::init().

+ 函数调用图:
+ 这是这个函数的调用关系图:

类成员变量说明

◆ _defaultEffect

Effect* EffectSprite::_defaultEffect
protected

在文件 ShaderTest2.cpp166 行定义.

被这些函数引用 setEffect() , 以及 ~EffectSprite().

◆ _effects

std::vector<std::tuple<ssize_t,Effect*,QuadCommand> > EffectSprite::_effects
protected

在文件 ShaderTest2.cpp165 行定义.

被这些函数引用 addEffect(), draw(), EffectSprite() , 以及 ~EffectSprite().


该类的文档由以下文件生成: