游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2081|回复: 7

请教个函数~~~~

[复制链接]

19

主题

73

帖子

73

积分

注册会员

Rank: 2

积分
73
发表于 2007-1-31 13:18:00 | 显示全部楼层 |阅读模式
IDirect3DDevice9:rocessVertices Method

--------------------------------------------------------------------------------

Applies the vertex processing defined by the vertex shader to the set of input data streams, generating a single stream of interleaved vertex data to the destination vertex buffer.

Syntax

HRESULT ProcessVertices(          UINT SrcStartIndex,
    UINT DestIndex,
    UINT VertexCount,
    IDirect3DVertexBuffer9 *pDestBuffer,
    IDirect3DVertexDeclaration9* pVertexDecl,
    DWORD Flags
);



大家知道这个函数是用来干什么的吗?

可以给个小例子代码说明不?

MS 的帮助看了,还是不怎么懂:( [em1] [em1]

30

主题

126

帖子

126

积分

注册会员

Rank: 2

积分
126
发表于 2007-1-31 15:04:00 | 显示全部楼层

Re:请教个函数~~~~

呵呵,一起研究一下.

30

主题

126

帖子

126

积分

注册会员

Rank: 2

积分
126
发表于 2007-1-31 15:57:00 | 显示全部楼层

Re:请教个函数~~~~

哈哈,我研究了一下,还没学到这么高级的技术,搞不太明白.不过我找到一些资料,希望对你有所帮助:
http://www.gamedev.net/community/forums/topic.asp?topic_id=392414&forum_id=10&gforum_id=0
http://www.gesoftfactory.com/developer/VD.htm

我的理解是此函数与DrawPrimitive差不多,只不过比DrawPrimitive更灵活些,ProcessVertices可以使用更高级的技术来实现.不知道我的理解对不对.

19

主题

73

帖子

73

积分

注册会员

Rank: 2

积分
73
 楼主| 发表于 2007-1-31 17:34:00 | 显示全部楼层

Re:请教个函数~~~~

struct Vertex
{
float x, y, z;
float tu, tv;
};
#define D3DFVF_CUSTOMVERTEX(D3DFVF_XYZ | D3DFVF_TEX1 | D3DFVF_TEXCOORDSIZE2(0))

struct Vertex2
{
float x, y, z, w;
float tu, tv;
};
#define D3DFVF_CUSTOMVERTEX2(D3DFVF_XYZW | D3DFVF_TEX1 | D3DFVF_TEXCOORDSIZE2(0))

...

IDirect3DVertexDeclaration9* Vertex_Declaration;
D3DVERTEXELEMENT9 Declaration_Elements[] =
{
{0, 0, D3DDECLTYPE_FLOAT4, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0},
{0, 16, D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 0},
D3DDECL_END()
};
g_pd3dDevice->CreateVertexDeclaration(Declaration_Elements, &Vertex_Declaration);

g_pd3dDevice->CreateVertexBuffer( 24*sizeof(Vertex),D3DUSAGE_SOFTWAREPROCESSING, D3DFVF_CUSTOMVERTEX, D3DPOOL_DEFAULT, &g_pVertexBuffer, NULL );

g_pd3dDevice->CreateVertexBuffer( 24*sizeof(Vertex2),0, D3DFVF_CUSTOMVERTEX2, D3DPOOL_DEFAULT, &g_pTransformedVertexBuffer, NULL );

...

g_pd3dDevice->SetStreamSource( 0, g_pVertexBuffer, 0, sizeof(Vertex) );

g_pd3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX );



g_pd3dDevice-&gtrocessVertices(0, 0, 24, g_pTransformedVertexBuffer, Vertex_Declaration, 0);

19

主题

73

帖子

73

积分

注册会员

Rank: 2

积分
73
 楼主| 发表于 2007-1-31 18:48:00 | 显示全部楼层

Re:请教个函数~~~~

还是不太明白什么时候会用到这个玩意 = =!

106

主题

743

帖子

745

积分

高级会员

Rank: 4

积分
745
QQ
发表于 2007-2-3 10:25:00 | 显示全部楼层

Re:请教个函数~~~~

我的理解是此函数与DrawPrimitive差不多,只不过比DrawPrimitive更灵活些,ProcessVertices可以使用更高级的技术来实现.不知道我的理解对不对.


ProcessVertices也是绘制图形的?

19

主题

73

帖子

73

积分

注册会员

Rank: 2

积分
73
 楼主| 发表于 2007-2-3 22:58:00 | 显示全部楼层

Re:请教个函数~~~~

ProcessVertices 不是绘制图形的!!

在game dev上很多人老 ProcessVertices 怎么绘制不了图,是因为 ProcessVertices

不负责绘制,但做的事情是除了 光栅化的那部分,它用当前的状态把你的顶点做所有的

转换,最后你得到的是,屏幕空间的顶点,如果你还需要调用  DrawPrimitive 才可以化出


不过在你调 DrawPrimitive 的时候记得重新关联资源流,要不会多做一个转换

106

主题

743

帖子

745

积分

高级会员

Rank: 4

积分
745
QQ
发表于 2007-4-18 11:00:00 | 显示全部楼层

Re:请教个函数~~~~

注意   Microsoft DirectX® 9.0的Microsoft® Direct3D®由IDirect3DDevice9:rocessVertices支持独立的顶点处理,而不需要渲染任何图元。这个独立的顶点处理总是以软件方式在主处理器上执行。

来源:http://www.gesoftfactory.com/developer/OG.htm
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-26 18:06

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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