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 应用,如下所示:
02 | #include "Linderdaum.h" |
03 | sEnvironment* Env = NULL; |
05 | clVirtualTrackball Trackball; |
06 | clGameCamera* Camera = NULL; |
08 | void DrawOverlay(LEvent Event, const LEventArgs& Args) |
11 | LMatrix4 Trans( Trackball.GetRotationMatrix() * Camera->GetCamera().GetModelViewMatrix() ); |
12 | Scene->SetCameraTransform( Trans ); |
13 | Scene->SetCameraProjection( Projection ); |
16 | Scene->SetUseOffscreenBuffer( false , false ); |
17 | Scene->RenderForward(); |
20 | bool MousePressedL = Env->Console->IsKeyPressed( LK_LBUTTON ); |
21 | Env->Viewport->UpdateTrackball( &Trackball, 10.0f, MousePressedL ); |
24 | void Update( LEvent Event, const LEventArgs& Args ) |
29 | APPLICATION_ENTRY_POINT |
32 | EXTRACT_COMMAND_LINE(CommandLine); |
33 | Env = new sEnvironment(); |
36 | Env->DeployDefaultEnvironment( CommandLine, "..\..\CommonMedia" ); |
37 | Env->FileSystem->Mount( "GameData" ); |
38 | Projection = Math::Perspective( 45.0f, Env->Viewport->GetAspectRatio(), 0.4f, 2000.0f ); |
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 ) ); |
48 | Scene = Env->Linker->Instantiate( "clScene" ); |
51 | int ID = Scene->AddGeom( Env->Resources->CreateIcosahedron( 3.0f, LVector3(0) ) ); |
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 ); |
60 | Scene->SetLocalTransform( ID, LMatrix4::GetTranslateMatrix( LVector3( 0.0f, 0.0f, 0.0f ) ) ); |
61 | Env->RunApplication( DEFAULT_CONSOLE_AUTOEXEC ); |
62 | APPLICATION_EXIT_POINT( Env ); |
代码在屏幕中心显示一个红色二十面体,可通过鼠标旋转该物体。 我们还希望在不对 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