PuzzleSDK
Material_2DEffects类 参考

#include <MaterialSystemTest.h>

+ 类 Material_2DEffects 继承关系图:
+ Material_2DEffects 的协作图:

struct  Locations
 

Public 成员函数

 CREATE_FUNC (Material_2DEffects)
 
virtual void onEnter () override
 
virtual std::string subtitle () const override
 
void updateCCTimeUniforms (float)
 
- Public 成员函数 继承自 MaterialSystemBaseTest
virtual std::string title () const override
 
- Public 成员函数 继承自 TestCase
 TestCase ()
 
 ~TestCase ()
 
virtual Type getTestType () const
 
virtual float getDuration () const
 
virtual std::string getExpectedOutput () const
 
virtual std::string getActualOutput () const
 
virtual void restartTestCallback (cocos2d::Ref *sender)
 
virtual void nextTestCallback (cocos2d::Ref *sender)
 
virtual void priorTestCallback (cocos2d::Ref *sender)
 
virtual void onBackCallback (cocos2d::Ref *sender)
 
void setTestSuite (TestSuite *testSuite)
 
TestSuitegetTestSuite () const
 
float getRunTime () const
 
void setTestCaseName (const std::string &name)
 
std::string getTestCaseName () const
 
const cocos2d::Label * getSubtitleLable () const
 
const cocos2d::MenuItemImage * getRestartTestItem () const
 

Private 属性

std::vector< LocationstimeUniforms
 

额外继承的成员函数

- Public 类型 继承自 TestCase
enum class  Type { ROBUSTNESS , UNIT , GRAPHICAL_STATIC , MANUAL }
 
- Public 属性 继承自 TestCase
CC_CONSTRUCTOR_ACCESS __pad0__: virtual bool init() override
 
- Protected 属性 继承自 TestCase
cocos2d::MenuItemImage * _priorTestItem
 
cocos2d::MenuItemImage * _restartTestItem
 
cocos2d::MenuItemImage * _nextTestItem
 
cocos2d::Label * _titleLabel
 
cocos2d::Label * _subtitleLabel
 

详细描述

在文件 MaterialSystemTest.h61 行定义.

成员函数说明

◆ CREATE_FUNC()

Material_2DEffects::CREATE_FUNC ( Material_2DEffects  )

◆ onEnter()

void Material_2DEffects::onEnter ( )
overridevirtual

重载 TestCase .

在文件 MaterialSystemTest.cpp113 行定义.

114{
116
117 auto properties = Properties::createNonRefCounted("Materials/2d_effects.material#sample");
118
119 // Print the properties of every namespace within this one.
120 printProperties(properties, 0);
121
122 Material *mat1 = Material::createWithProperties(properties);
123
124 auto spriteBlur = Sprite::create("Images/grossini.png");
125 spriteBlur->setPositionNormalized(Vec2(0.2f, 0.5f));
126 this->addChild(spriteBlur);
127 spriteBlur->setProgramState(mat1->getTechniqueByName("blur")->getPassByIndex(0)->getProgramState());
128
129 auto spriteOutline = Sprite::create("Images/grossini.png");
130 spriteOutline->setPositionNormalized(Vec2(0.4f, 0.5f));
131 this->addChild(spriteOutline);
132 spriteOutline->setProgramState(mat1->getTechniqueByName("outline")->getPassByIndex(0)->getProgramState());
133
134 auto spriteNoise = Sprite::create("Images/grossini.png");
135 spriteNoise->setPositionNormalized(Vec2(0.6f, 0.5f));
136 this->addChild(spriteNoise);
137 spriteNoise->setProgramState(mat1->getTechniqueByName("noise")->getPassByIndex(0)->getProgramState());
138
139 auto spriteEdgeDetect = Sprite::create("Images/grossini.png");
140 spriteEdgeDetect->setPositionNormalized(Vec2(0.8f, 0.5f));
141 this->addChild(spriteEdgeDetect);
142 spriteEdgeDetect->setProgramState(mat1->getTechniqueByName("edge_detect")->getPassByIndex(0)->getProgramState());
143
144 timeUniforms.clear();
145
146#define FETCH_CCTIME_LOCATION(sprite) do { \
147 auto programState = sprite->getProgramState(); \
148 auto location = programState->getUniformLocation("u_Time"); \
149 timeUniforms.emplace_back(programState, location); \
150 }while(0)
151
152 FETCH_CCTIME_LOCATION(spriteBlur);
153 FETCH_CCTIME_LOCATION(spriteOutline);
154 FETCH_CCTIME_LOCATION(spriteNoise);
155 FETCH_CCTIME_LOCATION(spriteEdgeDetect);
156
157 schedule(CC_SCHEDULE_SELECTOR(Material_2DEffects::updateCCTimeUniforms));
158
159 // properties is not a "Ref" object
160 CC_SAFE_DELETE(properties);
161}
static void printProperties(Properties *properties, int indent)
#define FETCH_CCTIME_LOCATION(sprite)
void updateCCTimeUniforms(float)
std::vector< Locations > timeUniforms
virtual void onEnter() override
Definition: BaseTest.cpp:430

引用了 FETCH_CCTIME_LOCATION, TestCase::onEnter(), printProperties(), timeUniforms , 以及 updateCCTimeUniforms().

+ 函数调用图:

◆ subtitle()

std::string Material_2DEffects::subtitle ( ) const
overridevirtual

重载 TestCase .

在文件 MaterialSystemTest.cpp163 行定义.

164{
165 return "Testing effects on Sprite";
166}

◆ updateCCTimeUniforms()

void Material_2DEffects::updateCCTimeUniforms ( float  )

在文件 MaterialSystemTest.cpp168 行定义.

169{
170 float time = Director::getInstance()->getTotalFrames() * Director::getInstance()->getAnimationInterval();
171 Vec4 random(time / 10.0f, time, time * 2.0f, time * 4.0f);
172 for (auto &loc : timeUniforms)
173 {
174 loc.programState->setUniform(loc.location, &random, sizeof(random));
175 }
176}

引用了 timeUniforms.

被这些函数引用 onEnter().

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

类成员变量说明

◆ timeUniforms

std::vector<Locations> Material_2DEffects::timeUniforms
private

在文件 MaterialSystemTest.h78 行定义.

被这些函数引用 onEnter() , 以及 updateCCTimeUniforms().


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