基于英特尔® 架构使用Linderdaum* 引擎开发C++ 安卓* NDK游戏

Linderdaum* 引擎使用 C++ 编写而成,是一款开源、面向对象的 3D 游戏引擎,主要 面向 Microsoft Windows、Google Android* 和 BlackBerry OS 10。 它经过专门的设计 ,是适用于开发面向游戏、工业和科学可视化的交互式 3D 应用的集成解决方案。

设置构建流程

如欲使用 Linderdaum 引擎,您首先需要安装:

  • Linderdaum Engine SDK 0.6.08
  • OpenAL
  • Python* 3(要求版本 3 或更高版本)

此外,您还需要软件以下支持 Android 项目构建的软件:

您需要采用 Android 2.2 或更高版本的设备,以进行测试。 为确保 Android NDK 的 正常运行,安装 Linderdaum SDK 的文件夹名称必须没有任何空格。 Linderdaum SDK 有 权以编译的形式构建函数库(输入 Libs.Win32/Libs.Win64 and BuildAndroid/jni), 因此您只需更新元信息和构建文件即可。 通过 SDK first rebuildLSD.py 和 makeconfig.py 运行存储库中的 binary。 安装完毕后,您现在可以开始编写多平台应用 。

HelloAndroid 应用

为避免引擎部分过载或对多平台进行详细阐述,我们使用 Apps / Test_Android / Src / file 中的最小 3D 应用,如下所示:

01Test_Android.cpp:
02#include "Linderdaum.h"
03sEnvironment* Env = NULL;
04LMatrix4              Projection;
05clVirtualTrackball    Trackball;
06clGameCamera*         Camera = NULL;
07clScene*              Scene  = NULL;
08void DrawOverlay(LEvent Event, const LEventArgs& Args)
09{
10    // refresh camera
11    LMatrix4 Trans( Trackball.GetRotationMatrix() * Camera->GetCamera().GetModelViewMatrix() );
12    Scene->SetCameraTransform( Trans );
13    Scene->SetCameraProjection( Projection );
14 
15    // draw the scene
16    Scene->SetUseOffscreenBuffer( false, false );
17    Scene->RenderForward();
18 
19    // update the virtual trackball
20    bool MousePressedL = Env->Console->IsKeyPressed( LK_LBUTTON );
21    Env->Viewport->UpdateTrackball( &Trackball, 10.0f, MousePressedL );
22}
23 
24void Update( LEvent Event, const LEventArgs& Args )
25{
26    // in Args.FFloatArg хранится DeltaTime in milliseconds
27}
28 
29APPLICATION_ENTRY_POINT
30{
31    LString CommandLine;
32    EXTRACT_COMMAND_LINE(CommandLine);
33    Env = new sEnvironment();
34 
35    // CommonMedia used only on the PC, on Android, it is cleverly packaged in resources
36    Env->DeployDefaultEnvironment( CommandLine, "..\..\CommonMedia" );
37    Env->FileSystem->Mount("GameData");
38    Projection = Math::Perspective( 45.0f, Env->Viewport->GetAspectRatio(), 0.4f, 2000.0f );
39 
40    // create a camera and assign it to events
41    Camera = Env->Linker->Instantiate( "clGameCamera" );
42    Camera->GetCamera().SetPosition( LVector3(0,-10,10) );
43    CONNECTOBJ( L_EVENT_TIMER, &clGameCamera::Event_TIMER, Camera );
44    Env->Connect( L_EVENT_DRAWOVERLAY, Utils::Bind( &DrawOverlay ) );
45    Env->Connect( L_EVENT_TIMER,       Utils::Bind( &Update      ) );
46 
47    // create a scene
48    Scene = Env->Linker->Instantiate("clScene");
49 
50    // and add it to the mesh
51    int ID = Scene->AddGeom( Env->Resources->CreateIcosahedron( 3.0f, LVector3(0) ) );
52 
53    // set up the material
54    clMaterial* Mtl = Env->Resources->CreateMaterial();
55    Mtl->SetPropertyValue( "DiffuseColor", "1.0 0.0 0.0 0" );
56    Mtl->SetPropertyValue( "CastShadow",   "false" );
57    Scene->SetMtl( ID, Mtl );
58 
59    // set the position
60    Scene->SetLocalTransform( ID, LMatrix4::GetTranslateMatrix( LVector3(  0.0f, 0.0f, 0.0f ) ) );
61    Env->RunApplication( DEFAULT_CONSOLE_AUTOEXEC );
62    APPLICATION_EXIT_POINT( Env );
63}
64 
65APPLICATION_SHUTDOWN
66{
67}

代码在屏幕中心显示一个红色二十面体,可通过鼠标旋转该物体。 我们还希望在不对 Android 设备或 Windows PC 做出任何修改的情况下构建应用。

点击查看全文:https://software.intel.com/zh-cn/android/articles/developing-c-android-ndk-games-using-linderdaum-engine-on-intel-architecture?utm_source=CSDN.com&utm_medium=Syndication&utm_campaign=Android_PRC_Q3-15

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值