Managed DirectX +C# 开发(入门篇)(八)

这篇博客介绍了如何利用Managed DirectX和C#进行3D图形开发,特别是顶点缓冲和索引缓冲的概念及实现。通过索引缓冲减少重复顶点,提高效率,同时展示了动态和静态缓存的使用场景。此外,还讲解了深度缓冲的工作原理及其在3D渲染中的重要性,以及如何开启和配置深度缓冲以正确绘制多个3D对象的层次关系。
摘要由CSDN通过智能技术生成
  
第七章 顶点缓冲
一、索引缓冲
3D物体中的三角形经常会有许多共用顶点。如果用两个三角形组合为一个长方形,有两个点被重复使用,当要表现一个更精细更复杂的模型的时候,重复的顶点数将会变得很大。下图的立方体,仅有八个顶点,但是当用三角形列表示它的时候,所有的点都被重复使用。
索引缓冲就是一块保存了顶点数据索引的缓冲。缓冲中的索引为32位或16位的整数。比如,当使用索引0,1,6来绘制一个三角形时,会通过索引映射到相应的顶点来渲染图像。
以下为创建一个索引缓冲的代码示例:
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);
}
 
顶点和索引缓存有相似的地方,一个顶点缓存是一块连续的存储了顶点数据的内存。同样的ÿ
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值