游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4123|回复: 13

关于多边形对象的问题

[复制链接]

30

主题

298

帖子

299

积分

中级会员

Rank: 3Rank: 3

积分
299
QQ
发表于 2004-7-11 00:12:00 | 显示全部楼层 |阅读模式
在D3D中,用三角形LIST来组成一个矩形的话,即使使用了顶点索引缓冲仍然有很大的空间浪费。因为想请问一个如何用三角形STRIPS的顶点索引来定义一个如下的矩形呢?
[em5] [em5] [em5] [em5] [em5] [em5] [em5] [em5] [em5]
sf_200471101249.jpg

30

主题

298

帖子

299

积分

中级会员

Rank: 3Rank: 3

积分
299
QQ
 楼主| 发表于 2004-7-31 00:52:00 | 显示全部楼层

Re: 关于多边形对象的问题

这个问题发了好久也没有人来解答,不过我已经找到方法了。

就是使用退化三角化来连接两个STRIP,退化三角形就是面积为0的三角形,在涵染过程中不会被涵染出来。

以下图为例:
有9个顶点,索引序号为0-8

使用顶点索引来描述为TRIANGLESTRIP的索引数组如下:

{0,1,3,4,6,7,7,1,1,2,4,5,7,8}

一共有12个三角形:
{0,1,3}//第1组
{1,3,4}//第2组
{3,4,6}//第3组
{4,6,7}//第4组
{6,7,7}//第5组   退化三角形,作为连接用
{7,7,1}//第6组   退化三角形,作为连接用
{7,1,1}//第7组   退化三角形,作为连接用
{1,1,2}//第8组   退化三角形,作为连接用
{1,2,3}//第9组
{2,4,5}//第10组
{4,5,7}//第11组
{5,7,8}//第12组

希望以上的东西能对大家有所帮助。
[em10] [em10] [em10]
sf_200473105211.jpg

32

主题

377

帖子

378

积分

中级会员

Rank: 3Rank: 3

积分
378
发表于 2004-7-31 14:30:00 | 显示全部楼层

Re:关于多边形对象的问题

本人菜鸟一只,只会用list+索引缓冲来建立矩形。楼主说的方法应该对我很有用。
请楼主具体说明一下这个问题。
用lis跟用strips比较,是不是仅在索引缓冲上更为节约?(而顶点缓冲应该是一样大的吧?)
楼主解决的方法我不太懂,为什么要用“退化三角形”作为连接呢?如果就是指定了顶点,难道出来的矩形本来不是这个样子的?
最后还有个问题:我用list+索引缓冲建矩形,发现只能建立最大大约80×80的矩形,再大了运行就会没有响应。不知为何?

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2004-7-31 17:38:00 | 显示全部楼层

Re:关于多边形对象的问题

楼上的意思是提交无用顶点是三角形条代化。节约VB的使用

30

主题

298

帖子

299

积分

中级会员

Rank: 3Rank: 3

积分
299
QQ
 楼主| 发表于 2004-7-31 18:30:00 | 显示全部楼层

Re:关于多边形对象的问题

To fromhell:
    这个主要是STRIP索引的定义方法和LIST的定义不同导致的。
    以上面我贴的图为例:
用LIST索引来定义两个三角形需要6个顶点索引。
{0,1,3,1,3,4}
而STRIP索引来定义两个三角形只需要4个顶点索引。
{0,1,3,4)
当顶点较多时,就STRIP索引就可以比用LIST索引节约出不少的存储空间了。
为什么要使用退化三角形来连接两个STRIP,你看一看STRIP是如何定义的就明白了。

32

主题

377

帖子

378

积分

中级会员

Rank: 3Rank: 3

积分
378
发表于 2004-7-31 21:56:00 | 显示全部楼层

Re:关于多边形对象的问题

楼主的意思是:节约了索引缓冲,而顶点缓冲二者一样的吧?

7

主题

67

帖子

67

积分

注册会员

Rank: 2

积分
67
QQ
发表于 2004-7-31 22:36:00 | 显示全部楼层

Re:关于多边形对象的问题

但是相邻两个三角形的法线不是变成相反的吗?比如三角形1跟三角形2的。

30

主题

298

帖子

299

积分

中级会员

Rank: 3Rank: 3

积分
299
QQ
 楼主| 发表于 2004-8-1 15:43:00 | 显示全部楼层

Re:关于多边形对象的问题

to 耗子:
确实如此呢。因为我一直在写2D的游戏,所以我的引擎里没有使用到光照,因此我并没有注意到法线这个问题。

30

主题

298

帖子

299

积分

中级会员

Rank: 3Rank: 3

积分
299
QQ
 楼主| 发表于 2004-8-1 16:33:00 | 显示全部楼层

Re:关于多边形对象的问题

在看《D3D技术内幕》这本书里提到,D3D在渲染三角STRIP时,会把偶数三角形的顶点作一定处理,使之成为顺时钟方向的三角形再进行渲染。

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2004-8-1 17:27:00 | 显示全部楼层

Re:关于多边形对象的问题

奇数序列和偶数序列的三角形在处理法线是正好是相反的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-25 04:53

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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