关闭

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

1605人阅读 评论(0) 收藏 举报

什么是图元?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()

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:24097次
    • 积分:348
    • 等级:
    • 排名:千里之外
    • 原创:9篇
    • 转载:0篇
    • 译文:0篇
    • 评论:15条
    文章存档
    最新评论