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

Method init

core/renderer/backend/ProgramState.cpp:155–184  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

153}
154
155bool ProgramState::init(Program* program)
156{
157 AX_SAFE_RETAIN(program);
158 _program = program;
159
160 _vertexLayout = program->getVertexLayout();
161 _ownVertexLayout = false;
162 _vertexUniformBufferSize = _program->getUniformBufferSize(ShaderStage::VERTEX);
163
164#ifdef AX_USE_METAL
165 _fragmentUniformBufferSize = _program->getUniformBufferSize(ShaderStage::FRAGMENT);
166#endif
167
168 _uniformBuffers.resize((std::max)(_vertexUniformBufferSize + _fragmentUniformBufferSize, (size_t)1), 0);
169
170#if AX_ENABLE_CACHE_TEXTURE_DATA
171 _backToForegroundListener =
172 EventListenerCustom::create(EVENT_RENDERER_RECREATED, [this](EventCustom*) { this->resetUniforms(); });
173 Director::getInstance()->getEventDispatcher()->addEventListenerWithFixedPriority(_backToForegroundListener, -1);
174#endif
175
176 const auto programId = program->getProgramId();
177 if (programId < ProgramType::BUILTIN_COUNT)
178 {
179 this->_batchId = programId;
180 this->_isBatchable = true;
181 }
182
183 return true;
184}
185
186void ProgramState::updateBatchId()
187{

Callers

nothing calls this directly

Calls 6

resetUniformsMethod · 0.95
createFunction · 0.85
getInstanceFunction · 0.85
getUniformBufferSizeMethod · 0.45
resizeMethod · 0.45

Tested by

no test coverage detected