游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2072|回复: 0

盖莫引擎天空面的使用

[复制链接]

50

主题

69

帖子

69

积分

注册会员

Rank: 2

积分
69
发表于 2010-2-5 11:38:00 | 显示全部楼层 |阅读模式
使用盖莫游戏引擎做的天空面例子(当然可以使用天空盒,天空顶)
代码如下:
#include <cstdlib>
#include <iostream>
#include <GEngine/Main.hpp>

using namespace std;

core::RefPtr<core::Image>   skyimage[1];
core::RefPtr<core::Texture> skytexture[1];
core::RefPtr<core::Image>   terrainimage[2];
core::RefPtr<core::Texture> terraintexture[2];

int main(int argc, char *argv[])
{   
    core:evice* device = core::InitDevice("盖莫引擎场景测试");
   
    //! 获取资源管理器
    core::ResourceManager *resourcemanager = device->GetResourceManager();
   
    //! 获取场景管理器
    core::RefPtr<core::SceneManager> scenemanager = core::SceneManager::GetSceneManager();
   
    //! 获取新的摄像机并设置为活动摄像机
    core::RefPtr<core::Camera> camera = scenemanager->CreateCamera("mycamera",
                                                                   Vector3f(500,20,400),
                                                                   Vector3f(503,20,400),
                                                                   Vector3f(0,1,0));
     
    //! 设置当前活动摄像机
    scenemanager->SetActiveCamera(camera);
   
    //! 获取天空面图形和纹理
    skyimage[0] = resourcemanager->GetImage("sky_image","..\\image//sky//top.jpg");
    skytexture[0] = resourcemanager->GetTexture("sky_texture",skyimage[0]);  
    core::RefPtr<core::SkyPlane> skyplane = scenemanager->GetSkyPlane(32,500,900,skytexture[0]);
    skyplane->SetRotationStep(0.03f);
   
    //! 设置地形数据
    terrainimage[0] = resourcemanager->GetImage("terrain_image","..\\terrain//terrain.bmp");
    terrainimage[1] = resourcemanager->GetImage("terrain_detail","..\\terrain//terrainflat.jpg");
    terraintexture[0] = resourcemanager->GetTexture("terrain_texture1",terrainimage[0]);
    terraintexture[1] = resourcemanager->GetTexture("terrain_texture2",terrainimage[1]);
     
    core::RefPtr<core::Terrain> terrain = scenemanager->GetTerrain("terrain1");
    bool flag = terrain->Load("..\\terrain//terrain2.raw",1024);
    terrain->SetStepSize(16);
    terrain->SetTexture(terraintexture[1],terraintexture[0]);
   
    //! 设置摄像机数据
    camera->SetViewport(0,0,640,480);
    camera->SetPerspective(45,640.0f/480.0f,0.1f,1000);
                  
    //! 获取输入系统指针
    core::Input* input = device->GetInput();
   
    //! 获取雾指针
    core::RefPtr<core::Fog> fog = scenemanager->GetFog();
    fog->SetColor(core::Color(0.3f,0.3f,0.2f));
    fog->SetDensity(0.001f);
    fog->SetQuality(0.003f);
    fog->SetBound(0.1f,1000.0f);
    fog->Render();
                  
    BEGIN_LOOP(device)
        camera->SetPerspective(45,640.0f/480.0f,0.1f,1000);
        camera->Render();
        skyplane->Render();
        terrain->Render();
    END_LOOP(device)
   
    terrain->Deinit();

    device->Close();
    device->Drop();
   
    system(&quotAUSE");
    return EXIT_SUCCESS;
}


贴图如下:



编译:devc++,vc2003
如果对盖莫引擎感兴趣可以通过邮件和我联系ccsdu2009@sohu.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2024-5-11 19:43

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表