PuzzleSDK
Sprite3DCubeMapTest类 参考

#include <Sprite3DTest.h>

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

Public 成员函数

 CREATE_FUNC (Sprite3DCubeMapTest)
 
 Sprite3DCubeMapTest ()
 
 ~Sprite3DCubeMapTest ()
 
virtual std::string title () const override
 
virtual std::string subtitle () const override
 
void addNewSpriteWithCoords (cocos2d::Vec2)
 
void onTouchesMoved (const std::vector< cocos2d::Touch * > &touches, cocos2d::Event *event)
 
- Public 成员函数 继承自 Sprite3DTestDemo
virtual ~Sprite3DTestDemo ()
 
- 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
 

Protected 属性

cocos2d::TextureCube * _textureCube
 
cocos2d::Skybox * _skyBox
 
cocos2d::Sprite3D * _teapot
 
cocos2d::Camera * _camera
 
cocos2d::EventListenerCustom * _backToForegroundListener
 
- Protected 属性 继承自 TestCase
cocos2d::MenuItemImage * _priorTestItem
 
cocos2d::MenuItemImage * _restartTestItem
 
cocos2d::MenuItemImage * _nextTestItem
 
cocos2d::Label * _titleLabel
 
cocos2d::Label * _subtitleLabel
 

额外继承的成员函数

- Public 类型 继承自 TestCase
enum class  Type { ROBUSTNESS , UNIT , GRAPHICAL_STATIC , MANUAL }
 
- Public 属性 继承自 TestCase
CC_CONSTRUCTOR_ACCESS __pad0__: virtual bool init() override
 

详细描述

在文件 Sprite3DTest.h463 行定义.

构造及析构函数说明

◆ Sprite3DCubeMapTest()

Sprite3DCubeMapTest::Sprite3DCubeMapTest ( )

在文件 Sprite3DTest.cpp2057 行定义.

2057 :
2058 _textureCube(nullptr),
2059 _skyBox(nullptr),
2060 _teapot(nullptr)
2061{
2062 auto s = Director::getInstance()->getWinSize();
2063 addNewSpriteWithCoords(Vec2(s.width / 2, s.height / 2));
2064}
void addNewSpriteWithCoords(cocos2d::Vec2)
cocos2d::TextureCube * _textureCube
Definition: Sprite3DTest.h:477
cocos2d::Sprite3D * _teapot
Definition: Sprite3DTest.h:479
cocos2d::Skybox * _skyBox
Definition: Sprite3DTest.h:478

引用了 addNewSpriteWithCoords().

+ 函数调用图:

◆ ~Sprite3DCubeMapTest()

Sprite3DCubeMapTest::~Sprite3DCubeMapTest ( )

在文件 Sprite3DTest.cpp2066 行定义.

2067{
2068#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
2069 Director::getInstance()->getEventDispatcher()->removeEventListener(_backToForegroundListener);
2070#endif
2071
2072 _teapot->release();
2073 _skyBox->release();
2074 _textureCube->release();
2075}
cocos2d::EventListenerCustom * _backToForegroundListener
Definition: Sprite3DTest.h:483

引用了 _backToForegroundListener, _skyBox, _teapot , 以及 _textureCube.

成员函数说明

◆ addNewSpriteWithCoords()

void Sprite3DCubeMapTest::addNewSpriteWithCoords ( cocos2d::Vec2  )

在文件 Sprite3DTest.cpp2087 行定义.

2088{
2089 Size visibleSize = Director::getInstance()->getVisibleSize();
2090 _camera = Camera::createPerspective(60, visibleSize.width / visibleSize.height, 10, 1000);
2091 _camera->setPosition3D(Vec3(0.f, 0.f, 50.f));
2092 _camera->setCameraFlag(CameraFlag::USER1);
2093
2094 auto listener = EventListenerTouchAllAtOnce::create();
2095 listener->onTouchesMoved = CC_CALLBACK_2(Sprite3DCubeMapTest::onTouchesMoved, this);
2096 _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);
2097
2098 // create a teapot
2099 _teapot = Sprite3D::create("Sprite3DTest/teapot.c3b");
2100 _teapot->retain();
2101
2102 // create the second texture for cylinder
2103 _textureCube = TextureCube::create("Sprite3DTest/skybox/left.jpg", "Sprite3DTest/skybox/right.jpg",
2104 "Sprite3DTest/skybox/top.jpg", "Sprite3DTest/skybox/bottom.jpg",
2105 "Sprite3DTest/skybox/front.jpg", "Sprite3DTest/skybox/back.jpg");
2106
2107 _textureCube->retain();
2108
2109 //set texture parameters
2110 Texture2D::TexParams tRepeatParams;
2111 tRepeatParams.magFilter = backend::SamplerFilter::LINEAR;
2112 tRepeatParams.minFilter = backend::SamplerFilter::LINEAR;
2113 tRepeatParams.sAddressMode = backend::SamplerAddressMode::CLAMP_TO_EDGE;
2114 tRepeatParams.tAddressMode = backend::SamplerAddressMode::CLAMP_TO_EDGE;
2115 _textureCube->setTexParameters(tRepeatParams);
2116
2117
2118 auto mat = Sprite3DMaterial::createWithFilename("Sprite3DTest/CubeMap.material");
2119 auto state = mat->getTechniqueByIndex(0)->getPassByIndex(0)->getProgramState();
2120 _teapot->setMaterial(mat);
2121
2122 // pass the texture sampler to our custom shader
2123 auto cubeTexLoc = state->getUniformLocation("u_cubeTex");
2124 state->setTexture(cubeTexLoc, 0, _textureCube->getBackendTexture());
2125
2126 _teapot->setPosition3D(Vec3(0.0f, -5.0f, 0.0f));
2127 _teapot->setRotation3D(Vec3(-90.0f, 180.0f, 0.0f));
2128
2129 auto rotate_action = RotateBy::create(1.5, Vec3(0.0f, 30.0f, 0.0f));
2130 _teapot->runAction(RepeatForever::create(rotate_action));
2131
2132 addChild(_teapot);
2133
2134 {
2135 // config skybox
2136 _skyBox = Skybox::create();
2137 _skyBox->retain();
2138
2139 _skyBox->setTexture(_textureCube);
2140 addChild(_skyBox);
2141 }
2142
2143 addChild(_camera);
2144 setCameraMask(2);
2145#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
2146 _backToForegroundListener = EventListenerCustom::create(EVENT_COME_TO_FOREGROUND,
2147 [this](EventCustom*)
2148 {
2149 CC_SAFE_RELEASE(_textureCube);
2150 _textureCube = TextureCube::create("Sprite3DTest/skybox/left.jpg", "Sprite3DTest/skybox/right.jpg",
2151 "Sprite3DTest/skybox/top.jpg", "Sprite3DTest/skybox/bottom.jpg",
2152 "Sprite3DTest/skybox/front.jpg", "Sprite3DTest/skybox/back.jpg");
2153
2154 _textureCube->retain();
2155 //set texture parameters
2156 Texture2D::TexParams tRepeatParams;
2157 tRepeatParams.magFilter = backend::SamplerFilter::LINEAR;
2158 tRepeatParams.minFilter = backend::SamplerFilter::LINEAR;
2159 tRepeatParams.sAddressMode = backend::SamplerAddressMode::CLAMP_TO_EDGE;
2160 tRepeatParams.tAddressMode = backend::SamplerAddressMode::CLAMP_TO_EDGE;
2161 _textureCube->setTexParameters(tRepeatParams);
2162
2163 auto mat = Sprite3DMaterial::createWithFilename("Sprite3DTest/CubeMap.material");
2164 auto state = mat->getTechniqueByIndex(0)->getPassByIndex(0)->getProgramState();
2165 _teapot->setMaterial(mat);
2166 _skyBox->setTexture(_textureCube);
2167 // pass the texture sampler to our custom shader
2168 auto cubeTexLoc = state->getUniformLocation("u_cubeTex");
2169 state->setTexture(cubeTexLoc, 0, _textureCube->getBackendTexture());
2170 }
2171 );
2172 Director::getInstance()->getEventDispatcher()->addEventListenerWithFixedPriority(_backToForegroundListener, 1);
2173#endif
2174}
void onTouchesMoved(const std::vector< cocos2d::Touch * > &touches, cocos2d::Event *event)
cocos2d::Camera * _camera
Definition: Sprite3DTest.h:480

引用了 _backToForegroundListener, _camera, _skyBox, _teapot, _textureCube , 以及 onTouchesMoved().

被这些函数引用 Sprite3DCubeMapTest().

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

◆ CREATE_FUNC()

Sprite3DCubeMapTest::CREATE_FUNC ( Sprite3DCubeMapTest  )

◆ onTouchesMoved()

void Sprite3DCubeMapTest::onTouchesMoved ( const std::vector< cocos2d::Touch * > &  touches,
cocos2d::Event *  event 
)

在文件 Sprite3DTest.cpp2176 行定义.

2177{
2178 if (touches.size())
2179 {
2180 auto touch = touches[0];
2181 auto delta = touch->getDelta();
2182
2183 static float _angle = 0.f;
2184 _angle -= CC_DEGREES_TO_RADIANS(delta.x);
2185 _camera->setPosition3D(Vec3(50.0f * sinf(_angle), 0.0f, 50.0f * cosf(_angle)));
2186 _camera->lookAt(Vec3(0.0f, 0.0f, 0.0f), Vec3(0.0f, 1.0f, 0.0f));
2187 }
2188}

引用了 _camera.

被这些函数引用 addNewSpriteWithCoords().

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

◆ subtitle()

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

重载 TestCase .

在文件 Sprite3DTest.cpp2082 行定义.

2083{
2084 return "";
2085}

◆ title()

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

重载 Sprite3DTestDemo .

在文件 Sprite3DTest.cpp2077 行定义.

2078{
2079 return "CubeMap & Skybox Test";
2080}

类成员变量说明

◆ _backToForegroundListener

cocos2d::EventListenerCustom* Sprite3DCubeMapTest::_backToForegroundListener
protected

在文件 Sprite3DTest.h483 行定义.

被这些函数引用 addNewSpriteWithCoords() , 以及 ~Sprite3DCubeMapTest().

◆ _camera

cocos2d::Camera* Sprite3DCubeMapTest::_camera
protected

在文件 Sprite3DTest.h480 行定义.

被这些函数引用 addNewSpriteWithCoords() , 以及 onTouchesMoved().

◆ _skyBox

cocos2d::Skybox* Sprite3DCubeMapTest::_skyBox
protected

在文件 Sprite3DTest.h478 行定义.

被这些函数引用 addNewSpriteWithCoords() , 以及 ~Sprite3DCubeMapTest().

◆ _teapot

cocos2d::Sprite3D* Sprite3DCubeMapTest::_teapot
protected

在文件 Sprite3DTest.h479 行定义.

被这些函数引用 addNewSpriteWithCoords() , 以及 ~Sprite3DCubeMapTest().

◆ _textureCube

cocos2d::TextureCube* Sprite3DCubeMapTest::_textureCube
protected

在文件 Sprite3DTest.h477 行定义.

被这些函数引用 addNewSpriteWithCoords() , 以及 ~Sprite3DCubeMapTest().


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