【C++】OGRE:面向对象图形渲染库配置与示例

😏*★,°* :.☆( ̄▽ ̄)/$:.°★ 😏

这篇文章主要介绍。
无专精则不能成,无涉猎则不能通。------梁启超

欢迎来到我的博客,一起学习,共同进步。

喜欢的朋友可以关注一下,下次更新不迷路🥞

文章目录

    • [:smirk:1. 项目介绍](#:smirk:1. 项目介绍)
    • [:blush:2. 环境配置](#:blush:2. 环境配置)
    • [:satisfied:3. 使用说明](#:satisfied:3. 使用说明)

😏1. 项目介绍

项目Github地址:https://github.com/OGRECave/ogre

OGRE(Object-Oriented Graphics Rendering Engine,面向对象图形渲染引擎)是一个功能强大、灵活且开源的3D图形渲染引擎,主要使用C++语言编写。它旨在为开发者提供一个高效、易于使用的工具,帮助他们快速构建出高质量的3D应用程序,如游戏、模拟器、可视化工具等。

OGRE的主要特点:

1 面向对象设计: OGRE采用面向对象的设计理念,将3D图形渲染过程封装成一系列类和接口,使得开发者可以更直观地理解和操作3D场景。

2 跨平台支持: OGRE支持多个平台,包括Windows、Linux、macOS、iOS、Android等,开发者可以将同一套代码部署到不同的平台上。

3 硬件加速: OGRE充分利用了现代图形硬件的加速能力,提供高效的渲染性能。

4 丰富的功能: OGRE提供了丰富的功能,包括场景管理、材质系统、灯光、阴影、动画、粒子系统等,满足了各种3D应用程序的需求。

主要用于游戏开发、模拟器、可视化等,机器人开发中的GazeboRviz就用了这个库。

😊2. 环境配置

下面进行环境配置:

bash 复制代码
# apt安装
sudo apt install libogre-1.9-dev
# 编译
g++ main.cc -I/usr/include/OGRE `pkg-config --cflags --libs OGRE`

😆3. 使用说明

一个基础的示例(能运行,但要加载各种模型的话,需要进一步了解):

cpp 复制代码
#include <Ogre.h>
#include <OgreException.h>

class OgreApplication : public Ogre::FrameListener {
public:
    OgreApplication() : root(nullptr), window(nullptr), sceneManager(nullptr), camera(nullptr) {}

    bool initialize() {
        root = new Ogre::Root("plugins.cfg");

        if (!root->showConfigDialog()) {
            return false;
        }

        window = root->initialise(true, "Ogre Window");
        sceneManager = root->createSceneManager(Ogre::ST_GENERIC);

        camera = sceneManager->createCamera("MainCamera");
        camera->setPosition(Ogre::Vector3(0, 0, 80));
        camera->lookAt(Ogre::Vector3(0, 0, -300));
        camera->setNearClipDistance(5);

        Ogre::Viewport* viewport = window->addViewport(camera);
        viewport->setBackgroundColour(Ogre::ColourValue(0, 0, 0));

        root->addFrameListener(this);
        return true;
    }

    void startRenderLoop() {
        root->startRendering();
    }

    bool frameRenderingQueued(const Ogre::FrameEvent& evt) override {
        if (window->isClosed()) return false;
        return true;
    }

private:
    Ogre::Root* root;
    Ogre::RenderWindow* window;
    Ogre::SceneManager* sceneManager;
    Ogre::Camera* camera;
};

int main() {
    OgreApplication app;

    if (app.initialize()) {
        app.startRenderLoop();
    }

    return 0;
}

加载模型需要创建 plugins.cfg,还需要有模型:

bash 复制代码
# Defines plugins to load

# Define renderer plugins
Plugin=RenderSystem_GL
Plugin=RenderSystem_Direct3D9

# Define image codec plugins
Plugin=Plugin_ParticleFX
Plugin=Plugin_BSPSceneManager
Plugin=Plugin_CgProgramManager
Plugin=Plugin_PCZSceneManager
Plugin=Plugin_OctreeZone
Plugin=Plugin_OctreeSceneManager

以上。

相关推荐
一只小小的芙厨25 分钟前
AT_tkppc3_d 巨大チェスボード 题解
c++·题解
我在人间贩卖青春28 分钟前
C++之继承与派生类的关系
c++·向上造型·向下造型
Trouvaille ~29 分钟前
【Linux】应用层协议设计实战(二):Jsoncpp序列化与完整实现
linux·运维·服务器·网络·c++·json·应用层
EmbedLinX42 分钟前
嵌入式之协议解析
linux·网络·c++·笔记·学习
wangjialelele1 小时前
Linux中的进程管理
java·linux·服务器·c语言·c++·个人开发
历程里程碑1 小时前
普通数组----轮转数组
java·数据结构·c++·算法·spring·leetcode·eclipse
李日灐1 小时前
C++进阶必备:红黑树从 0 到 1: 手撕底层,带你搞懂平衡二叉树的平衡逻辑与黑高检验
开发语言·数据结构·c++·后端·面试·红黑树·自平衡二叉搜索树
汉克老师1 小时前
GESP2025年6月认证C++二级( 第一部分选择题(1-8))
c++·循环结构·表达式·分支结构·gesp二级·gesp2级
rainbow68891 小时前
C++高性能框架Drogon:后端开发新标杆
c++
Q741_1471 小时前
C++ 优先级队列 大小堆 模拟 力扣 703. 数据流中的第 K 大元素 每日一题
c++·算法·leetcode·优先级队列·