我有一个为我的团队编写的游戏引擎,它是基于组件的。它有逻辑组件和可视组件。在可视组件中有一个名为 updateVisual(delta)
的函数,所有内容都在那里绘制。
例如,让我们以世界中的物理球实体为例:
class LogicBallComponent
{
// ...
};
class VisualBallcomponent
{
sfml::Texture mBallTexture;
void updateVisual(float)
{
mBallTexture.translate(...);
GlobalDisplayManager::instance().draw(mBallTexture);
}
};
GlobalDisplayManager
返回一些创建 gl-states 等的窗口表示(sf::RenderWindow in sfml)。该系统易于集成。
现在我需要使用我的引擎制作安卓游戏。我选择了 cocos2d-x 用于窗口创建、渲染、字体、资源等。
还有另一种方法可以完成这项工作:
class Ball : public CLayer
{
bool Ball::init() {
CSprite* sprite = CSprite::create(...);
this->addChild(sprite, 0); // [!]
}
};
而且我不知道如何以我的方式使用它。有这种可能吗?
最佳答案
您应该查看函数“void CCDisplayLinkDirector::mainLoop(void)”,这是 coco2d-x 渲染引擎的主循环。
coco2d-x 为周期性调用循环提供包装器。在 iOS 中,您应该检查 platform/ios 中 CCDirectorCaller.mm 的函数 startMainLoop。
关于c++ - cocos2d-x 中的渲染循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15604173/