20、3D图形世界:顶点与索引缓冲区及光照技术

3D图形世界:顶点与索引缓冲区及光照技术

1. 顶点和索引缓冲区

在3D渲染中,我们之前的方法存在一些效率问题,可通过使用顶点缓冲区和索引缓冲区来解决。这些技术可在 VertexAndIndexBuffers 示例项目中查看,该项目向场景中添加了三个立方体,分别对应不同的渲染技术。

1.1 使用顶点缓冲区

之前我们使用 DrawUserPrimitives 函数渲染对象,将包含对象几何信息的顶点数组传递给它。但这种方法不是最有效的,因为图形硬件使用顶点数据时,所有顶点都必须传输到图形内存中,这会影响性能。

使用顶点缓冲区可以解决这个问题,它允许顶点数据永久驻留在图形硬件中。这样在切换顶点缓冲区时,开销比复制顶点数据数组小得多。

以下是创建和初始化 VertexBuffer 对象的代码:

// Have we already built the cube vertex array in a previous instance? 
if (_vertices == null) 
{ 
    // No, so build them now 
    BuildVertices(); 
    // Create a vertex buffer 
    _vertexBuffer = new VertexBuffer(game.GraphicsDevice, 
              typeof(VertexPositionColor), _vertices.Le
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值