游戏开发论坛

 找回密码
 立即注册
搜索
楼主: 232326411

在ogre中是否能自己控制渲染的流程呢?而不是直接mRoot-&a

[复制链接]

2

主题

62

帖子

62

积分

注册会员

Rank: 2

积分
62
QQ
 楼主| 发表于 2007-9-13 18:38:00 | 显示全部楼层

Re:rhett

请教一下rhett ,可以给几个例子么,比较想了解这一块

31

主题

278

帖子

298

积分

中级会员

Rank: 3Rank: 3

积分
298
发表于 2007-9-13 21:06:00 | 显示全部楼层

Re:在ogre中是否能自己控制渲染的流程呢?而不是直接mRoot

举个例子你可以创建一个渲染队列监听器来控制.

对D

2

主题

62

帖子

62

积分

注册会员

Rank: 2

积分
62
QQ
 楼主| 发表于 2007-9-14 09:21:00 | 显示全部楼层

Re:在ogre中是否能自己控制渲染的流程呢?而不是直接mRoot

发个例子来看啊

2

主题

49

帖子

49

积分

注册会员

Rank: 2

积分
49
发表于 2007-9-14 11:57:00 | 显示全部楼层

Re:在ogre中是否能自己控制渲染的流程呢?而不是直接mRoot

RenderQueueListener 可以做到一些功能
另外是不是?明一下 需要??幼龅脑??
通常自己控制渲染流程 只??斐尚?艿拖
?有?ξ?硇掳姹镜南嗳菪砸??陆

就算有?例 也是?版的
ogre是?源的 直接看源始?就可以了

0

主题

48

帖子

58

积分

注册会员

Rank: 2

积分
58
发表于 2007-12-5 11:43:00 | 显示全部楼层

Re:在ogre中是否能自己控制渲染的流程呢?而不是直接mRoot

这个很简单啦,采用WaitableTimerr定时器,调用renderOneFrame就行了,还可以控制帧数,空闲时让出CPU,降低资源占用率

9

主题

55

帖子

59

积分

注册会员

Rank: 2

积分
59
发表于 2007-12-10 10:44:00 | 显示全部楼层

Re:在ogre中是否能自己控制渲染的流程呢?而不是直接mRoot

自己创建游戏窗口,不要用引擎的go..和startRendering();


然后用自己窗口的hwnd创建一个renderWindow

NameValuePairList param;

param["left"] = "0";

param["top"] = "0";

param["title"] = "render window";

param["externalWindowHandle"] = StringConverter::toString((size_t)hWnd);

RenderWindow *pRenderWindow = mRoot->createRenderWindow(RENDER_WINDOW_NAME, 800, 600, false, &param);

if (!pRenderWindow)
{
return false;
}


然后和普通游戏一样..你可以

while (GetMessage(&msg, NULL, 0, 0))
        {
                SDK::IEngine::GetInstance()->Render();
                TranslateMessage(&msg);
                DispatchMessage(&msg);
        }

其中SDK::IEngine::GetInstance()->Render();是我封装过的..里面就是调用mRoot->renderOneFrame();

而且这样做在你的winProc中也可以自由控制

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{

        switch (message)
        {

        case WM_DESTROY:
                {
                        PostQuitMessage(0);
                        break;
                }
        case WM_PAINT:
                {
                        //char str[255] = {0};

                        //sprintf(str, "天空盒子+地板+兽头+摄像机+灯光+雾的例子 fps is %f", Engine::GetInstancePtr()->GetFps());

                        //SetWindowText(hWnd, str);

                        SDK::IEngine::GetInstance()->Render();

                        break;
                }

        case WM_ERASEBKGND:
                {
                        return 1;
                }

        default:
                {
                        return DefWindowProc(hWnd, message, wParam, lParam);
                }
        }
        return 0;
}

35

主题

370

帖子

376

积分

中级会员

Rank: 3Rank: 3

积分
376
发表于 2008-1-5 01:55:00 | 显示全部楼层

Re:在ogre中是否能自己控制渲染的流程呢?而不是直接mRoot

请问,楼上的已经在while中调用了SDK::IEngine::GetInstance()->Render();
为什么还需要case WM_PAINT:

9

主题

55

帖子

59

积分

注册会员

Rank: 2

积分
59
发表于 2008-1-7 10:56:00 | 显示全部楼层

Re:在ogre中是否能自己控制渲染的流程呢?而不是直接mRoot

case WM_PAINT:

是举例子..可以去掉...

2

主题

62

帖子

62

积分

注册会员

Rank: 2

积分
62
QQ
 楼主| 发表于 2008-1-31 10:03:00 | 显示全部楼层

Re:eway365

可以调用单个实体的渲染么?
如在一祯中调用
{
车->Render();
天空->Render();
人物->Render();
}
大多数用于商业游戏的引擎都是用的这种渲染模式,这样便于控制以及根据不同的具体游戏场景制定渲染方案

0

主题

5

帖子

11

积分

新手上路

Rank: 1

积分
11
发表于 2008-1-31 18:52:00 | 显示全部楼层

Re:在ogre中是否能自己控制渲染的流程呢?而不是直接mRoot

楼上的是不是希望在 onFrame 中,控制 entity 的挂接,或 entity->setVisible(bool) ?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-20 01:17

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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