游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2941|回复: 5

如果一个场景中有多个模型,该怎么渲染?

[复制链接]

14

主题

40

帖子

45

积分

注册会员

Rank: 2

积分
45
发表于 2005-3-12 18:21:00 | 显示全部楼层 |阅读模式
如果一个场景中有多个模型,该怎么渲染?
比如说一个场景中有人,有动物,有车,有树木。如果用 c++,
可以用 CMan, CAnimal, CCar, CTree 来表示。那么是在每个
对象的类内实现渲染代码,例如 CMan::Render, CAnimal::Render,
CCar::Render, CTree::Render, 然后对场景中的每一个对象
调用Render方法呢,还是让这些类返回渲染所需要的信息,例如
CMan::GetVertices, CMan::GetTextures 等等,然后集中在
一起统一渲染?

第一种方法的好处是概念上很清晰,但是也许效率会差一些,也
不容易优化。

第二种方法可以集中控制渲染,可以采取一些优化措施,比如适当
排序以减少状态切换等。

望高手指教。。。

47

主题

145

帖子

3602

积分

论坛元老

Rank: 8Rank: 8

积分
3602
发表于 2005-3-12 18:42:00 | 显示全部楼层

Re:如果一个场景中有多个模型,该怎么渲染?

弄个总体渲染啊
void MainRender()
{
     CAnimal::Render;
     CCar::Render;
     CTree::Render;
}

8

主题

111

帖子

163

积分

注册会员

Rank: 2

积分
163
发表于 2005-3-12 19:16:00 | 显示全部楼层

Re:如果一个场景中有多个模型,该怎么渲染?

建议用第二种.第二种也可以写得很清晰的.

20

主题

473

帖子

502

积分

高级会员

Rank: 4

积分
502
发表于 2005-3-12 20:02:00 | 显示全部楼层

Re:如果一个场景中有多个模型,该怎么渲染?

建立一个chunk的概念
比如 :
class _renderchunk
{
  materal;
  vb;
  ib;
  light;
...
}

每种物体的render 方法 都填充一个chunk,加入到chunk 链表中
然后根据优化原则,对这个链表中的项目进行排序后渲染

69

主题

450

帖子

473

积分

中级会员

战魂缔造者

Rank: 3Rank: 3

积分
473
QQ
发表于 2005-3-17 09:11:00 | 显示全部楼层

Re:如果一个场景中有多个模型,该怎么渲染?

将这些东西抽象出一个基类,然后放入渲染队列,对渲染状态排序就可以了

7

主题

188

帖子

198

积分

注册会员

Rank: 2

积分
198
发表于 2005-3-17 09:29:00 | 显示全部楼层

Re:如果一个场景中有多个模型,该怎么渲染?

哦哦,收到~~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-24 20:10

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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