MCPcopy Create free account
hub / github.com/axmolengine/axmol / updateShaderProgram

Method updateShaderProgram

core/2d/Label.cpp:712–765  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

710}
711
712void Label::updateShaderProgram()
713{
714 uint32_t programType = backend::ProgramType::POSITION_TEXTURE_COLOR;
715 if (_currentLabelType == LabelType::BMFONT || _currentLabelType == LabelType::CHARMAP)
716 {
717 auto texture = _getTexture(this);
718 if (texture)
719 {
720 programType =
721 backend::ProgramStateRegistry::getInstance()->getProgramType(programType, texture->getSamplerFlags());
722 }
723 }
724 else
725 {
726 switch (_currLabelEffect)
727 {
728 case ax::LabelEffect::NORMAL:
729 if (_useDistanceField)
730 programType = backend::ProgramType::LABEL_DISTANCE_NORMAL;
731 else if (_useA8Shader)
732 programType = backend::ProgramType::LABEL_NORMAL;
733 else
734 {
735 auto texture = _getTexture(this);
736 if (texture)
737 {
738 programType = backend::ProgramStateRegistry::getInstance()->getProgramType(
739 programType, texture->getSamplerFlags());
740 }
741 }
742 break;
743 case ax::LabelEffect::OUTLINE:
744 programType =
745 _useDistanceField ? backend::ProgramType::LABEL_DISTANCE_OUTLINE : backend::ProgramType::LABLE_OUTLINE;
746 break;
747 case ax::LabelEffect::GLOW:
748 if (_useDistanceField)
749 programType = backend::ProgramType::LABLE_DISTANCE_GLOW;
750 break;
751 default:
752 return;
753 }
754 }
755
756 this->setProgramStateByProgramId(programType);
757
758 updateUniformLocations();
759
760 for (auto&& batch : _batchCommands)
761 updateBatchCommand(batch);
762
763 auto& quadPipeline = _quadCommand.getPipelineDescriptor();
764 quadPipeline.programState = _programState;
765}
766
767void Label::updateBatchCommand(Label::BatchCommand& batch)
768{

Callers

nothing calls this directly

Calls 4

_getTextureFunction · 0.85
getInstanceFunction · 0.85
getProgramTypeMethod · 0.80

Tested by

no test coverage detected