#android #gamedev #graphics #3d-rendering #rendering-engine #engine

trs_24

一个基于OpenGL的游戏引擎(OpenGL 2.0+)

8个版本

0.2.0 2024年8月11日
0.1.6 2023年12月14日

#433 in 游戏开发

Download history 1/week @ 2024-07-29 69/week @ 2024-08-05 46/week @ 2024-08-12

每月 116次下载

MIT/Apache

85KB
2K SLoC

TRS_24

License Crates.io Downloads Docs

一个基于Rust的OpenGL游戏引擎(OpenGL 2.0+)

特点

  • 多维:支持3D和2D渲染。
  • 性能:为最佳性能而设计。
  • 跨平台:支持Windows、MacOS、Linux和Android构建。
  • OpenGL 2.0 API:开启多种GPU/iGPU兼容性。
  • 捆绑器(WIP):内置捆绑系统,支持Windows、MacOS、Linux和Android。

入门指南

基本来说,使用两个文件是使用此引擎的理想方法。主文件lib.rs仅用于在Android上运行窗口和构建共享对象 (*.so)。次要文件main.rs仅用于在主机机器上进行测试,并构建**非Android平台。这两个文件都需要放在src目录中。

为了使这两个文件共存,以下内容需要在Cargo.toml

[lib]
# Causes the production of a dynamic system library
crate-type = ["cdylib"]

[[bin]]
name = "test"
path = "src/main.rs"

这两个文件将具有它们自己的结构

  • lib.rs的结构

[!注意] 注意第一行中#![cfg(target_os = "android")]的必要性,以及在android_main函数之前#[no_mangle]属性。它们必须存在,否则编译和构建时会出现错误和崩溃。

#![cfg(target_os = "android")]

use trs_24::overture::*;

#[no_mangle]
pub fn android_main(app: AndroidApp) {
    // Creates an event loop for android platforms only.
    let event_loop = EventLoopBuilder::new().with_android_app(app).build();

    // The rest of your code here...
    // 99% of the time, this is the place for the content of the 
    // main function in main.rs, excluding the event_loop definition 
}
  • main.rs的结构
use trs_24::overture::*;

pub fn main() {
    // Creates an event loop for non-android platforms only.
    let event_loop = EventLoopBuilder::new().build();

    // The rest of your code here...
}

ℹ️ 要查看一个完整的示例,请克隆仓库并转到example目录。

构建和捆绑

有关Android非Android目标平台的完整说明,请参阅wiki页面构建和捆绑

依赖关系

~24–39MB
~693K SLoC