3D游戏基础 Direct3D(四) 固定管线绘制图元

什么是图元?Primitive

说白了,就是一堆顶点集合。这些顶点描述了一个3维图形。 由3d max产出的模型,其实,就是一组图元,加上相关的光照、材质 等等属性 构成的。

通常,在D3D和OpenGL中,图元都由两个数组(或者叫buffer)来表示,一个叫顶点数组(vertex buffer ),一个叫索引数组(index buffer)。

Vertex buffer: 用来存放顶点的具体坐标原始数据的;

Index buffer: 用来存放各个图元顶点的索引号的,索引号匹配Vertex buffer

为什么要有顶点数组,还好再搞个索引数组出来呢??主要是因为,很多图元顶点可能会出现重叠,这时候,用顶点来表示的话,就比较浪费空间了。而,用索引数组来索引,看起来就清晰,而且高效。要知道,庞大的图元,在传输的时候,也是非常耗时的啊。。。。你只用相对轻松的更换索引数组,就可以画另一个三维物体了,而不用随时更新庞大的定点数组。

那么,图元在d3d中,是如何被绘制的呢?

1 首先,创建顶点和索引缓冲:

device->CreateVertexBuffer()

device->CreateIndexBuffer()

2 设定绘制状态:

device->SetRenderState()

3 设定数据流:

device->SetStreamSource()

4 设定顶点格式

device->SetFVF() //所谓FVF,就是指顶点格式,主要有 坐标、材质和纹理 几个量

5 设置索引缓冲

device->SetIndices()

6 绘制图元

device->BeginSceen()

device->DrawPrimitive9()  

or

device->DrqwIndexedPrimitive()

device->EndScene()

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值