mirror of https://github.com/axmolengine/axmol.git
commit
7732cd6e77
|
@ -752,8 +752,8 @@ void Sprite3D::setGLProgramState(GLProgramState *glProgramState)
|
||||||
}
|
}
|
||||||
void Sprite3D::setGLProgram(GLProgram *glprogram)
|
void Sprite3D::setGLProgram(GLProgram *glprogram)
|
||||||
{
|
{
|
||||||
Node::setGLProgram(glprogram);
|
auto glProgramState = GLProgramState::create(glprogram);
|
||||||
setGLProgramState(getGLProgramState());
|
setGLProgramState(glProgramState);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Sprite3D::setBlendFunc(const BlendFunc &blendFunc)
|
void Sprite3D::setBlendFunc(const BlendFunc &blendFunc)
|
||||||
|
|
|
@ -55,6 +55,7 @@ Sprite3DTests::Sprite3DTests()
|
||||||
ADD_TEST_CASE(Sprite3DForceDepthTest);
|
ADD_TEST_CASE(Sprite3DForceDepthTest);
|
||||||
ADD_TEST_CASE(Sprite3DCubeMapTest);
|
ADD_TEST_CASE(Sprite3DCubeMapTest);
|
||||||
ADD_TEST_CASE(NodeAnimationTest);
|
ADD_TEST_CASE(NodeAnimationTest);
|
||||||
|
ADD_TEST_CASE(Issue9767);
|
||||||
};
|
};
|
||||||
|
|
||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
|
@ -2509,3 +2510,58 @@ void Sprite3DCubeMapTest::onTouchesMoved(const std::vector<Touch*>& touches, coc
|
||||||
_camera->lookAt(Vec3(0.0f, 0.0f, 0.0f), Vec3(0.0f, 1.0f, 0.0f));
|
_camera->lookAt(Vec3(0.0f, 0.0f, 0.0f), Vec3(0.0f, 1.0f, 0.0f));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Issue9767::Issue9767()
|
||||||
|
{
|
||||||
|
_shaderType = Issue9767::ShaderType::SHADER_TEX;
|
||||||
|
|
||||||
|
auto s = Director::getInstance()->getWinSize();
|
||||||
|
auto sprite = Sprite3D::create("Sprite3DTest/boss1.obj");
|
||||||
|
sprite->setScale(3.f);
|
||||||
|
sprite->setTexture("Sprite3DTest/boss.png");
|
||||||
|
addChild( sprite );
|
||||||
|
sprite->setPosition(Vec2(s.width/2, s.height/2));
|
||||||
|
_sprite = sprite;
|
||||||
|
|
||||||
|
TTFConfig ttfConfig("fonts/arial.ttf", 15);
|
||||||
|
auto label1 = Label::createWithTTF(ttfConfig,"switch shader");
|
||||||
|
auto item1 = MenuItemLabel::create(label1,CC_CALLBACK_1(Issue9767::menuCallback_SwitchShader,this) );
|
||||||
|
|
||||||
|
item1->setPosition( Vec2(s.width * 0.9f - item1->getContentSize().width * 0.5f, s.height * 0.5f - item1->getContentSize().height ) );
|
||||||
|
|
||||||
|
auto pMenu1 = CCMenu::create(item1, nullptr);
|
||||||
|
pMenu1->setPosition(Vec2(0,0));
|
||||||
|
addChild(pMenu1);
|
||||||
|
}
|
||||||
|
|
||||||
|
Issue9767::~Issue9767()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void Issue9767::menuCallback_SwitchShader(cocos2d::Ref* sender)
|
||||||
|
{
|
||||||
|
GLProgram* glProgram = nullptr;
|
||||||
|
if (_shaderType == Issue9767::ShaderType::SHADER_TEX)
|
||||||
|
{
|
||||||
|
_shaderType = Issue9767::ShaderType::SHADER_COLOR;
|
||||||
|
glProgram = GLProgramCache::getInstance()->getGLProgram(GLProgram::SHADER_3D_POSITION);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_shaderType = Issue9767::ShaderType::SHADER_TEX;
|
||||||
|
glProgram = GLProgramCache::getInstance()->getGLProgram(GLProgram::SHADER_3D_POSITION_TEXTURE);
|
||||||
|
}
|
||||||
|
_sprite->setGLProgram(glProgram);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string Issue9767::title() const
|
||||||
|
{
|
||||||
|
return "Issue9767: test setGLProgram";
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string Issue9767::subtitle() const
|
||||||
|
{
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -532,4 +532,26 @@ protected:
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/// issue 9767 setGLProgram
|
||||||
|
class Issue9767 : public Sprite3DTestDemo
|
||||||
|
{
|
||||||
|
enum class ShaderType
|
||||||
|
{
|
||||||
|
SHADER_TEX,
|
||||||
|
SHADER_COLOR,
|
||||||
|
};
|
||||||
|
public:
|
||||||
|
CREATE_FUNC(Issue9767);
|
||||||
|
Issue9767();
|
||||||
|
~Issue9767();
|
||||||
|
virtual std::string title() const override;
|
||||||
|
virtual std::string subtitle() const override;
|
||||||
|
|
||||||
|
void menuCallback_SwitchShader(cocos2d::Ref* sender);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
ShaderType _shaderType;
|
||||||
|
cocos2d::Sprite3D* _sprite;
|
||||||
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue