|
使用盖莫游戏引擎做的天空面例子(当然可以使用天空盒,天空顶)
代码如下:
#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("AUSE");
return EXIT_SUCCESS;
}
贴图如下:
编译:devc++,vc2003
如果对盖莫引擎感兴趣可以通过邮件和我联系ccsdu2009@sohu.com
|
|