使用盖莫游戏引擎2.1.1天空面渲染天空!

使用盖莫游戏引擎2.1.1的天空面

使用盖莫游戏引擎2.1.1的天空面
这是使用盖莫游戏引擎2.1.1的天空面功能
很简单的
先说天空面描述符(引入这 个的目的在于减少很多不相关的函数和代码)

/////////////////////////////////////////////////////// /// 定义引擎天空面描述符 //////////////////////////////////////////////////////// struct SkyPlaneDesc { SkyPlaneDesc():divisions(32), pradius(1200.0f), aradius(1800.0f), rate(2.5f), axisx(0.0f), axisy(1.0f), axisz(0.0f) { } /////////////////////////////////////////////////////// /// 检查描述符是否合法 /////////////////////////////////////////////////////// bool IsValid()const { return image && divisions > 1 && pradius > 1.0f && aradius > 1.0f; } //! 天空面的图形 RefPtr image; int divisions; float pradius; float aradius; //! 天空转速(角度/秒) float rate; //! 天空旋转轴 float axisx; float axisy; float axisz; COPY_OBJECT(SkyPlaneDesc) };

其中天空面参数有天空面分割数division
2 个半径(面半径和空间半径)
一个天空图形
4个关于旋转的参数

下面是使用盖莫游戏引擎天空面的例子如下所示:

#include using namespace std; using namespace core; int Main() { //! 初始化引擎设备并得到设备指针 RefPtr device = InitDevice("天空面测试"); //! 得到引擎场景指针 RefPtr scenemanager = device->GetSceneManager(); //! 得到引擎资源指针 RefPtr resourcemanager = device->GetResourceManager(); //! 获取图形管理器指针 RefPtr imagemanager = resourcemanager->GetImageManager(); //! 得到视频驱动器指针 RefPtr videodriver = device->GetVideoDriver(); //! 得到天空图形 RefPtr image = imagemanager->CreateObject("sky","..//image//sky//top.jpg"); //! 得到天空盒指针 SkyPlaneDesc desc; desc.image = image; desc.divisions = 32; desc.pradius = 1200.0f; desc.aradius = 1800.0f; RefPtr sky = scenemanager->CreateSkyPlane(desc); //! 获取摄像机指针 RefPtr camera = scenemanager->GetCameraManager()->CreateCamera("camera", Vector3f(), Vector3f(100,13,0)); camera->SetViewPort(Recti(0,0,640,480)); camera->SetPerspective(45.0f,640.0f/480.0f,0.1f,600.0f); //! 获取雾指针 RefPtr fog = resourcemanager->GetFog("..//script//fog.lua","fog"); fog->Render(); BEGIN_LOOP(device) videodriver->SetClearBuffer(ENGINE_CLEAR_COLOR | ENGINE_CLEAR_DEPTH); camera->Render(); sky->Render(); END_LOOP(device) return 0; } 代码并没有 引入地形等其他不相关的东西 只是简单的天空面渲染 代码虽然很多但是核心无非就是: //! 得到天空图形 RefPtr image = imagemanager->CreateObject("sky","..//image//sky//top.jpg"); //! 得到天空盒指针 SkyPlaneDesc desc; desc.image = image; desc.divisions = 32; desc.pradius = 1200.0f; desc.aradius = 1800.0f; RefPtr sky = scenemanager->CreateSkyPlane(desc);

代码并没有 引入地形等其他不相关的东西
只是简单的天空面渲染
代码虽然很多但是核心无非就是:
//! 得到天空图形
RefPtr   image = imagemanager->CreateObject("sky","..//image//sky//top.jpg");
//! 得到天空盒指针
SkyPlaneDesc desc;
desc.image = image;
desc.divisions = 32;
desc.pradius = 1200.0f;
desc.aradius = 1800.0f;
RefPtr sky = scenemanager->CreateSkyPlane(desc);

在循环过程中无非就是她的Render了
下 面是贴图:

使用盖莫游戏引擎2.1.1天空面渲染天空!_第1张图片

你可能感兴趣的:(opengl,游戏引擎,设计模式,c++)