这有可能在cocos2d-x中制作3D场景吗?

时间:2014-12-09 01:15:47

标签: cocos2d-x

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

(我在youtube上看到的是导入3D模型的演示,但是我需要在房子里面拍摄真实的墙壁和不同的东西。)

2 个答案:

答案 0 :(得分:1)

绝对可能。

如果您想自己实现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.

答案 1 :(得分:0)

官方文档文档3D at:http://cocos2d-x.org/docs/programmers-guide/3d/index.html 3D已添加到版本3中。

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

cocos2d-x/build/bin/cpp-tests/cpp-tests

这是第一个:

enter image description here

,来源位于:https://github.com/cocos2d/cocos2d-x/blob/7350aeca8cf2c5bea3c3484d50202bf13cc18041/tests/cpp-tests/Classes/Scene3DTest/Scene3DTest.cpp