这可以在cocos2d-x中生成3d场景吗?

这可以在cocos2d-x中生成3d场景吗?,cocos2d-x,Cocos2d X,我用cocos2d-x制作了手机游戏(只是简单的学习引擎测试),我有12个场景,都是2d图形。我只想一个改变为三维,简单的三维模型和三维墙上拍摄。 这是否可能,以及如何在cocos2d-x中,尽管名称表明它只是2d (我在youtube上看到了导入3d模型的演示,但我需要用真实的墙和东西在房子里拍摄,这有点不同)。这是绝对可能的 如果您想自己实现3D场景,也可以。您可能需要创建一个从cocos2d::Node派生的类。然后实现了draw方法 void YourClass::draw(c

我用cocos2d-x制作了手机游戏(只是简单的学习引擎测试),我有12个场景,都是2d图形。我只想一个改变为三维,简单的三维模型和三维墙上拍摄。 这是否可能,以及如何在cocos2d-x中,尽管名称表明它只是2d


(我在youtube上看到了导入3d模型的演示,但我需要用真实的墙和东西在房子里拍摄,这有点不同)。

这是绝对可能的

如果您想自己实现3D场景,也可以。您可能需要创建一个从cocos2d::Node派生的类。然后实现了draw方法

void YourClass::draw(cocos2d::Renderer *renderer,
    const cocos2d::Mat4 &transform, uint32_t flags) override
{
    m_customCommand.init(globalZOrder);
    m_customCommand.func = CC_CALLBACK_0(
        YourClass::onRender, this, transform, flags);
    renderer->addCommand(&m_customCommand);
}
draw方法仅用于提交从实际渲染计时调用的渲染命令

void YourClass::onRender(const cocos2d::Mat4 &transform, uint32_t flags)
{
    // render whatever you want using OpenGL ES 2.0 APIs
}
但是你应该意识到以下几点

CCNode.h:

 * The following GL states will be enabled by default:
 * - `glEnableClientState(GL_VERTEX_ARRAY);`
 * - `glEnableClientState(GL_COLOR_ARRAY);`
 * - `glEnableClientState(GL_TEXTURE_COORD_ARRAY);`
 * - `glEnable(GL_TEXTURE_2D);`
 * AND YOU SHOULD NOT DISABLE THEM AFTER DRAWING YOUR NODE
 * But if you enable any other GL state, you should disable it after drawing your node.

第3版中增加了官方文件3D:3D

从源代码生成的测试包含几个3D示例:

cocos2d-x/build/bin/cpp-tests/cpp-tests
这是第一个:


源代码位于:

这是可能的,但您必须通过OpenGL进行所有渲染,方法是将CCNode子类化,并在其draw(或visit?)方法中添加OpenGL(3D)渲染代码,设置GL状态等等,然后恢复cocos2d默认GL状态。