游戏开发论坛

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

使用盖莫游戏引擎2.1.1做的简单球面映射

[复制链接]

56

主题

94

帖子

98

积分

注册会员

Rank: 2

积分
98
发表于 2010-4-7 17:32:00 | 显示全部楼层 |阅读模式
这是使用盖莫游戏引擎2.1.1做的简单球面映射
比较简单的不说什么
献上贴图


再上代码
using namespace std;
using namespace core;

int main(int argc, char **argv)
{
    //! 初始化引擎设备并得到设备指针
    RefPtr<Device> device = core::InitDevice("球面映射");
    //! 得到引擎场景指针
    RefPtr<SceneManager> scenemanager = device->GetSceneManager();
    //! 得到引擎资源指针
    RefPtr<ResourceManager> resourcemanager = device->GetResourceManager();
    //! 获取引擎纹理管理器指针
    RefPtr<TextureManager> texturemanager = resourcemanager->GetTextureManager();
    //! 获取引擎图形管理器
    RefPtr<ImageManager>   imagemanager = resourcemanager->GetImageManager();
    //! 获取引擎视频驱动器
    RefPtr<VideoDriver>    videodriver = device->GetVideoDriver();
   
    //! 得到图形和其纹理
    core::RefPtr<Image>   image1 = imagemanager->CreateObject("background","..\\image//spheremap//tree.jpg");
    core::RefPtr<Texture> background = texturemanager->CreateObject("background",image1);
     
    core::RefPtr<Image>   image2 = imagemanager->CreateObject("reflect","..\\image//spheremap//tree1.jpg");
    core::RefPtr<Texture> reflect = texturemanager->CreateSphereMap("reflect",image2);

    background->Generate();
    reflect->Generate();

    //! 获取全局摄像机,设置摄像机参数
    core::RefPtr<core::Camera> camera = scenemanager->GetActiveCamera();
    camera->SetPosition(Vector3f(0,0,30));
    camera->SetView(Vector3f(0,0,0));
    camera->SetDirection(Vector3f(0,1,0));
    camera->SetViewPort(Recti(0,0,640,480));
    camera->SetPerspective(50.0f,640.0f/480.0f,0.1f,1000.0f);
    videodriver->EnableCulling();

    BEGIN_LOOP(device)
       videodriver->SetClearBuffer(ENGINE_CLEAR_COLOR | ENGINE_CLEAR_DEPTH);
       videodriver->SetClearColor(core::Color::Blue);
       camera->Render();
  
       background->AttachRenderTarget();
       glBegin(GL_QUADS);
          glNormal3f( 0.0f, 0.0f, 1.0f);
          glTexCoord2f(0.0f, 0.0f); glVertex3f(-13.0f, -12.0f,  10.0f);
          glTexCoord2f(1.0f, 0.0f); glVertex3f( 13.0f, -12.0f,  10.0f);
          glTexCoord2f(1.0f, 1.0f); glVertex3f( 13.0f,  12.0f,  10.0f);
          glTexCoord2f(0.0f, 1.0f); glVertex3f(-13.0f,  12.0f,  10.0f);
       glEnd();
      
       reflect->AttachRenderTarget();
       videodriver->RenderSphere(12,32,32);
       videodriver->RenderSphere(9,32,32);
       videodriver->RenderSphere(6,32,32);
       reflect->Destroy();
    END_LOOP(device)

    return 0;
}

题外话:截止目前引擎支持2d纹理,球面映射和立方体纹理
其它相关的映射和纹理会陆续加入
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-13 06:31

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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