PuzzleSDK
ShaderMultiTexture类 参考

#include <ShaderTest.h>

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

Public 成员函数

 CREATE_FUNC (ShaderMultiTexture)
 
 ShaderMultiTexture ()
 
cocos2d::ui::Slider * createSliderCtl ()
 
void changeTexture (cocos2d::Ref *)
 
virtual std::string title () const override
 
virtual std::string subtitle () const override
 
virtual bool init () 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
 
virtual void onEnter () override
 

Public 属性

int _changedTextureId
 
cocos2d::Sprite * _sprite
 
- Public 属性 继承自 TestCase
CC_CONSTRUCTOR_ACCESS __pad0__: virtual bool init() override
 

静态 Private 属性

static const int rightSpriteTag = 2014
 

额外继承的成员函数

- Public 类型 继承自 TestCase
enum class  Type { ROBUSTNESS , UNIT , GRAPHICAL_STATIC , MANUAL }
 
- Protected 属性 继承自 TestCase
cocos2d::MenuItemImage * _priorTestItem
 
cocos2d::MenuItemImage * _restartTestItem
 
cocos2d::MenuItemImage * _nextTestItem
 
cocos2d::Label * _titleLabel
 
cocos2d::Label * _subtitleLabel
 

详细描述

在文件 ShaderTest.h207 行定义.

构造及析构函数说明

◆ ShaderMultiTexture()

ShaderMultiTexture::ShaderMultiTexture ( )

在文件 ShaderTest.cpp736 行定义.

737{
738}

成员函数说明

◆ changeTexture()

void ShaderMultiTexture::changeTexture ( cocos2d::Ref *  )

在文件 ShaderTest.cpp826 行定义.

827{
828 static const int textureFilesCount = 3;
829 static const std::string textureFiles[textureFilesCount] = {
830 "Images/grossini.png",
831 "Images/grossinis_sister1.png",
832 "Images/grossinis_sister2.png"
833 };
834 auto texture = Director::getInstance()->getTextureCache()->addImage(textureFiles[_changedTextureId++ % textureFilesCount]);
835 Sprite* right = dynamic_cast<Sprite*>(getChildByTag(rightSpriteTag));
836 right->setTexture(texture);
837 auto programState = _sprite->getProgramState();
838 SET_TEXTURE(programState, "u_texture1", 1, right->getTexture()->getBackendTexture());
839}
#define SET_TEXTURE(ps, name, idx, value)
Definition: ShaderTest.cpp:40
static const int rightSpriteTag
Definition: ShaderTest.h:209
cocos2d::Sprite * _sprite
Definition: ShaderTest.h:216

引用了 _changedTextureId, _sprite, rightSpriteTag , 以及 SET_TEXTURE.

被这些函数引用 init().

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

◆ CREATE_FUNC()

ShaderMultiTexture::CREATE_FUNC ( ShaderMultiTexture  )

◆ createSliderCtl()

ui::Slider * ShaderMultiTexture::createSliderCtl ( )

在文件 ShaderTest.cpp750 行定义.

751{
752 auto screenSize = Director::getInstance()->getWinSize();
753
754 ui::Slider* slider = ui::Slider::create();
755 slider->loadBarTexture("cocosui/sliderTrack.png");
756 slider->loadSlidBallTextures("cocosui/sliderThumb.png", "cocosui/sliderThumb.png", "");
757 slider->loadProgressBarTexture("cocosui/sliderProgress.png");
758 slider->setPercent(50);
759
760 slider->setPosition(Vec2(screenSize.width / 2.0f, screenSize.height / 3.0f));
761 addChild(slider);
762
763 slider->addEventListener([&](Ref* sender, ui::Slider::EventType type) {
764
765 if (type == ui::Slider::EventType::ON_PERCENTAGE_CHANGED)
766 {
767 ui::Slider* slider = dynamic_cast<ui::Slider*>(sender);
768 float p = slider->getPercent() / 100.0f;
769 auto state = _sprite->getProgramState();
770 SET_UNIFORM(state, "u_interpolate", p);
771 }
772 });
773 return slider;
774}
#define SET_UNIFORM(ps, name, value)
Definition: ShaderTest.cpp:34

引用了 _sprite , 以及 SET_UNIFORM.

被这些函数引用 init().

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

◆ init()

bool ShaderMultiTexture::init ( )
overridevirtual

在文件 ShaderTest.cpp776 行定义.

777{
778 if (ShaderTestDemo::init())
779 {
780 auto s = Director::getInstance()->getWinSize();
781
782 // Left: normal sprite
783 auto left = Sprite::create("Images/grossinis_sister1.png");
784 addChild(left);
785 left->setPosition(s.width*1/4, s.height/2);
786
787 // Right: normal sprite
788 auto right = Sprite::create("Images/grossinis_sister2.png");
789 addChild(right, 0, rightSpriteTag);
790 right->setPosition(s.width*3/4, s.height/2);
791
792
793 // Center: MultiTexture
794 _sprite = Sprite::createWithTexture(left->getTexture());
795 addChild(_sprite);
796 _sprite->setPosition(Vec2(s.width/2, s.height/2));
797
798 auto * fu = FileUtils::getInstance();
799 auto vertexShader = fu->getStringFromFile("Shaders/example_MultiTexture.vsh");
800 auto fragmentShader = fu->getStringFromFile("Shaders/example_MultiTexture.fsh");
801 auto program = backend::Device::getInstance()->newProgram(vertexShader.c_str(), fragmentShader.c_str());
802 auto programState = new backend::ProgramState(program);
803 _sprite->setProgramState(programState);
804
805 SET_TEXTURE(programState, "u_texture1", 1, right->getTexture()->getBackendTexture());
806 SET_UNIFORM(programState, "u_interpolate",0.5f);
807
808 // slider
810
811 // menu
812 auto label = Label::createWithTTF(TTFConfig("fonts/arial.ttf"), "change");
813 auto mi = MenuItemLabel::create(label, CC_CALLBACK_1(ShaderMultiTexture::changeTexture, this));
814 auto menu = Menu::create(mi, nullptr);
815 addChild(menu);
816 menu->setPosition(s.width * 7 / 8, s.height / 2);
817
818 CC_SAFE_RELEASE(programState);
819 CC_SAFE_RELEASE(program);
820 return true;
821 }
822
823 return false;
824}
void changeTexture(cocos2d::Ref *)
Definition: ShaderTest.cpp:826
cocos2d::ui::Slider * createSliderCtl()
Definition: ShaderTest.cpp:750

引用了 _sprite, changeTexture(), createSliderCtl(), rightSpriteTag, SET_TEXTURE , 以及 SET_UNIFORM.

+ 函数调用图:

◆ subtitle()

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

重载 TestCase .

在文件 ShaderTest.cpp745 行定义.

746{
747 return "MultiTexture";
748}

◆ title()

std::string ShaderMultiTexture::title ( ) const
overridevirtual

重载 TestCase .

在文件 ShaderTest.cpp740 行定义.

741{
742 return "MultiTexture test";
743}

类成员变量说明

◆ _changedTextureId

int ShaderMultiTexture::_changedTextureId

在文件 ShaderTest.h215 行定义.

被这些函数引用 changeTexture().

◆ _sprite

cocos2d::Sprite* ShaderMultiTexture::_sprite

在文件 ShaderTest.h216 行定义.

被这些函数引用 changeTexture(), createSliderCtl() , 以及 init().

◆ rightSpriteTag

const int ShaderMultiTexture::rightSpriteTag = 2014
staticprivate

在文件 ShaderTest.h209 行定义.

被这些函数引用 changeTexture() , 以及 init().


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