使用IndexBuffer(索引)

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

今天看了indexBuffer,为了加深记忆,我现在把学到的识知识总结一篇,欢迎大家指正我理解有错的地方。前面使

用VertexBuffer渲染了一个立方体,我用的是TriangleStrip,共用了18个顶点。而事实上,我们的立方本只有8个顶点

,以前的渲染方法尽足足多了10个顶点,对于像立方体这像一个小的实体来说,这并不会降低我们的执行效率和占用太

大的空间,但是,如果对于一个成千上万的顶点的实体来说,重复使用顶点可是一个不大的开销!如何减小开销呢?可

以使用IndexBuffer。它为每个顶点建立了一个索引,需要渲染顶点时,我们通过索引,可以重复使用某个顶点.

首先,还是先建立VertexBuffer,但这次VertexBuffer中只存8个顶点,即我们立方体的8个顶点.然后建立我们的索引属性indices:

private short[] indices={

0,1,2,

3,4,5,

6,7,0,

1,1,7,

3,5,0,

6,2,4};

在实例化VertexBuffer后,我们同时在下面实例化IndexBuffer,具体构造方法的参数可参见SDK,与VertexBuffer差不多.如:

indexBuffer=new IndexBuffer(typeof(short),indices.Length,device,Usage.WriteOnly,Pool.Default);

第一个参数是索引数组的类型,为short,第二个为数组长度,后面的….嘿嘿和VertexBuffer一样。实例化后,立即响应Created事件,

在里面将我们的indices指定到IndexBuffer中,用SetData方法,如:

IndexBuffer ib=(IndexBuffer)sender;

ib.SetData(indices,0,LockFlags.None);

这样索引顶点的建立和初始化都完成了,下面就是渲染了。

使用索引顶点渲染的方法是:Device. DrawIndexedPrimitives

参数不说了吧,SDK说得清清楚楚的。

我叙述得对不对?不对的话,请指出,谢谢!

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航