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
超级会员免费看
订阅专栏 解锁全文
2万+

被折叠的 条评论
为什么被折叠?



