游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2921|回复: 4

请教:关于VertexBuffer和IndexBuffer如何配合工作的问题

[复制链接]

4

主题

11

帖子

11

积分

新手上路

Rank: 1

积分
11
发表于 2005-11-5 17:43:00 | 显示全部楼层 |阅读模式
关于VertexBuffer和IndexBuffer如何配合工作的问题
为了画长方体,我研究了一下代码(从sdk中复制的)

[C#]
int numberVerts = 8;
short[] indices = {
    0,1,2, // Front Face
    1,3,2, // Front Face
    4,5,6, // Back Face
    6,5,7, // Back Face
    0,5,4, // Top Face
    0,2,5, // Top Face
    1,6,7, // Bottom Face
    1,7,3, // Bottom Face
    0,6,1, // Left Face
    4,6,0, // Left Face
    2,3,7, // Right Face
    5,2,7 // Right Face
};

Mesh mesh = new Mesh(numberVerts * 3, numberVerts, MeshFlags.Managed,
                     CustomVertex.PositionColored.Format, device);

using(VertexBuffer vb = mesh.VertexBuffer)
{
    GraphicsStream data = vb.Lock(0, 0, LockFlags.None);

    data.Write(new CustomVertex.PositionColored(-1.0f, 1.0f, 1.0f, 0x00ff00ff));
    data.Write(new CustomVertex.PositionColored(-1.0f, -1.0f, 1.0f, 0x00ff00ff));
    data.Write(new CustomVertex.PositionColored(1.0f, 1.0f, 1.0f, 0x00ff00ff));
    data.Write(new CustomVertex.PositionColored(1.0f, -1.0f, 1.0f, 0x00ff00ff));
    data.Write(new CustomVertex.PositionColored(-1.0f, 1.0f, -1.0f, 0x00ff00ff));
    data.Write(new CustomVertex.PositionColored(1.0f, 1.0f, -1.0f, 0x00ff00ff));
    data.Write(new CustomVertex.PositionColored(-1.0f, -1.0f, -1.0f, 0x00ff00ff));
    data.Write(new CustomVertex.PositionColored(1.0f, -1.0f, -1.0f, 0x00ff00ff));

    vb.Unlock();
}

using (IndexBuffer ib = mesh.IndexBuffer)
{
    ib.SetData(indices, 0, LockFlags.None);
}

我想问的是indices数组中的0,1,2,3,4,5,6,7和VertexBuffer中定义的八个顶点有什么关系吗?是不是在这里想画一个长方体,只需要定义含有8个顶点的VertexBuffer,然后定义一个IndexBuffer,其中的0,1,2,3。。。。7和VertexBuffer中的顶点对应起来呢?在调用DrawPrimitives时,首先去找IndexBuffer中的第二个值为1,然后direct3d自动调用VertexBuffer中索引值为1的那个顶点new CustomVertex.PositionColored(-1.0f, -1.0f, 1.0f, 0x00ff00ff),不知道我理解的对不对,如果我理解的正确的话,如何将IndexBuffer和VertexBuffer对应起来呢,请您赐教!小弟拜谢了!!

132

主题

1341

帖子

1341

积分

金牌会员

Rank: 6Rank: 6

积分
1341
发表于 2005-11-5 18:28:00 | 显示全部楼层

Re:请教:关于VertexBuffer和IndexBuffer如何配合工作的问题

0 2 3即是画以第一第三第四个点作为顶点的三角形

12

主题

70

帖子

70

积分

注册会员

Rank: 2

积分
70
发表于 2005-11-5 20:36:00 | 显示全部楼层

Re:请教:关于VertexBuffer和IndexBuffer如何配合工作的问题

我晕,你这里不是可以看到PositionColored(1.0f, -1.0f, -1.0f, 0x00ff00ff)的参数是怎么设置的么?
0x 00          ff          00      ff
     红色       绿色     蓝色    透明ALPHA

12

主题

70

帖子

70

积分

注册会员

Rank: 2

积分
70
发表于 2005-11-5 20:39:00 | 显示全部楼层

Re:请教:关于VertexBuffer和IndexBuffer如何配合工作的问题

楼主的理解是正确的

4

主题

11

帖子

11

积分

新手上路

Rank: 1

积分
11
 楼主| 发表于 2005-11-7 19:11:00 | 显示全部楼层

Re:请教:关于VertexBuffer和IndexBuffer如何配合工作的问题

多谢hdm2968的指导!
隆重感谢grakiss大侠!!!
再问:vertexBuffer和IndexBuffer不需要任何的相互作用的代码,就可以实现画图的时候DrawPrimitives方法自己去按照indexBuffer中的索引去VertexBuffer中找顶点来进行绘图了吗?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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