设计支持 Windows 8 的跨平台 3D 应用程序引擎

背景

我将引擎命名为 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 下载的照片。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值