游戏开发论坛

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

怎样调用SetStreamSource()函数?

[复制链接]

48

主题

142

帖子

142

积分

注册会员

Rank: 2

积分
142
发表于 2006-11-16 15:57:00 | 显示全部楼层 |阅读模式
HRESULT SetStreamSource(
  UINT StreamNumber,
  IDirect3DVertexBuffer9 * pStreamData,
  UINT OffsetInBytes,
  UINT Stride
);
第一个参数UINT StreamNumber取值范围是[0,-1]?
第二个参数 IDirect3DVertexBuffer9 * pStreamData没什么好说的.
关键是第三个参数不知怎么设置?
Offset from the beginning of the stream to the beginning of the vertex data, in bytes.
第四个参数应该是类似于sizeof(TERRAIN_CUSTOMVERTEX)这样吧?

106

主题

743

帖子

745

积分

高级会员

Rank: 4

积分
745
QQ
发表于 2006-11-16 18:36:00 | 显示全部楼层

Re:怎样调用SetStreamSource()函数?

这个函数干嘛用的?

48

主题

142

帖子

142

积分

注册会员

Rank: 2

积分
142
 楼主| 发表于 2006-11-17 10:01:00 | 显示全部楼层

Re:怎样调用SetStreamSource()函数?

比如渲染地形,先要调用这个函数SetStreamSource(),
然后设置顶点渲染方式SetVertexShader(),
设置贴图,材质,索引缓冲
最后渲染多边形DrawIndexedPrimitive()

DX文档的解释:
Binds a vertex buffer to a device data stream.绑定顶点缓冲到设备数据流.
(不知如此翻译可否)

106

主题

743

帖子

745

积分

高级会员

Rank: 4

积分
745
QQ
发表于 2006-11-17 10:24:00 | 显示全部楼层

Re:怎样调用SetStreamSource()函数?

原来这个是经常用的函数,突然之间给忘了,^_^。

SetStreamSource(渲染数据流序号,顶点缓冲区指针,启始位置,顶点大小)
第一个参数:渲染数据流是啥东西,一直不清楚,总是设为0。
第二个参数:顶点缓冲区指针。
第三个参数:启始位置,这个也不清楚,总是设为0。
第四个参数:顶点大小。

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2006-11-17 12:03:00 | 显示全部楼层

Re:怎样调用SetStreamSource()函数?

D3D9 中允许一个 Stream 的 VertexBuffer 中可以存在多个不同的数据,比如 Pos\Texcood\Normal 等等,需要注意的是这里的不同数据指的是不同顶点格式的顶点数据,比如一个 VB 中有3部分:0~n-1 存储了n个 Pos+Normal,n~2n-1 存储了n个 Texcoord0,2n~3n-1存储了n个 Texcoord1,在绘制 multi-coord-texture 时就这样可以使用 OffsetInBytes :
SetStreamSource (0,pVB, 0, sizeof(PosNormal) ); // 设置 Pos+Normal
SetStreamSource (1,pVB, sizeof( PosNormal)*n, sizeof(TexCood) ); // 设置 texcoord0
SetStreamSource (2,pVB, sizeof( TexCood)*n,sizeof(TexCood) ); // 设置 texcoord1
这样就可以根据游戏情况灵活的进行绘制。

48

主题

142

帖子

142

积分

注册会员

Rank: 2

积分
142
 楼主| 发表于 2006-11-17 15:47:00 | 显示全部楼层

Re:怎样调用SetStreamSource()函数?

谢谢,谢谢!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-25 22:13

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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