背景
我将引擎命名为 2c 有几个原因。第一个来自创建具有 3D 游戏元素的应用程序的挑战。创建此类应用程序的问题在于,用户交互往往会受到 3D 投影提供的不受限制的摄像机角度的影响。文本不再易于阅读,移动和用户交互动作可能会变得不自然。最好的解决方案是始终尝试限制应用程序的 3D,但使用 3D 来获得性能以及额外的价值转换和动画,这些都受到我们今天所了解和喜爱的移动操作系统的启发。所以结果,这个想法是,虽然它仍在使用 3D,但它试图隐藏你从 3D 获得的潜在疯狂,它更多的是 3D-1 = (3-1)(D-1) = (2c)。
第二个也许更酷的原因是,如果你说 2c,听起来就像看到,它强调了尝试制作你想看到的应用和游戏的愿景。
(好吧,免责声明,我有点痴迷于思想家,所以这些原因可能会很奇怪。)
源代码是用 C++ 编写的,并且可以使用不同的 IDE 加载不同的平台。
Android 版本使用 Eclipse IDE 导入 Android、App、Engine 和 External 项目。
PC、Mac、Linux 版本使用 Qt IDE 和框架,其项目文件可以在Qt/Project文件夹中找到。
iOS 版本使用 xCode IDE,其项目文件可以在iOS文件夹中找到。
源代码由包装器构成,以允许跨平台功能。它的工作方式是提供设备级代码、引擎级代码和应用程序级代码。
在这里,我们看到我们可以将 iOS 和 Qt 特定的渲染器和控制系统抽象为我们自己的引擎渲染器和控制结构,可以从我们编写的应用程序特定代码中使用。
例如,如果进行加载着色器的渲染操作并深入代码库,我们会发现。在引擎级渲染器CCRenderer.h 内部。
我们找到一个纯虚函数,称为loadShader(CCShader *shader);
在 Qt 版本中,我们找到了一个名为 的继承类CCDeviceRenderer
,它使用基于 OpenGL 和 Windows/Linux/Mac 文件系统的 Qt 库工具来实现着色器的加载。
在 iOS 版本中,我们找到了一个名为 的继承类CCDeviceRenderer
,它使用 Objective C、OpenGL ES 和 iOS 特定库来实现加载。
其他系统也以这种方式包装,例如,CCFileManager
文件系统操作CCURLManager
句柄,建立 http 连接的句柄。
由于大部分代码是在引擎层内编写的,并且只在引擎包装器函数内调用,因此应用程序特定级别内的大部分代码库都可以编写为跨平台运行。但是,在某些情况下,我们可能希望根据特定情况分散我们的平台。为此,我们定义了关键字(#IOS、#ANDROID、#QT)来识别我们正在运行的平台。
使用代码
以 iOS 版本为例,如果您进入Dev/iOS文件夹并使用 xCode 加载2c.xcodeproj。SceneSample1.cpp文件将是实验的最佳起点。
在这里,我们继承自CCSceneAppUI
,它提供了一个摄像头和触摸控件,以允许我们在使用多个触摸时以列表视图的形式与 3D 机制交互的世界中创建对象。
构造函数创建我们的 3D 应用程序相机并将其设置为使用我们的整个屏幕。
一旦将场景添加到其更新和渲染循环中,引擎就会调用 setup 函数。这使用了CCTile3DButton
一个 3D 按钮 tile 类,它允许在上面插入文本和图像,并以 3D 形式呈现自身,从不同的摄像机角度提供 3D 触摸检测。在这里,我们设置了三个按钮,一个用于背景,一个用于文本,一个用于图像。
虽然这可能是让您开始并运行创建 3D 按钮和文本的基本示例,但您可以查看SocialPoetry
继续扩展此视图的项目,以支持绘制从 FaceBook 下载的照片。