D3D10指南系列.docVIP

  • 2
  • 0
  • 约3.09千字
  • 约 4页
  • 2017-06-07 发布于重庆
  • 举报
D3D10指南系列

声明: ? 2012 刘邓 hfutld@yeah.net. All rights reserved. 翻译说明: 1./ 这个符号出现在我翻译一个单词或者词组不确定时可能的选项 2.() 出现在一个汉语词组后,标示这个单词比较关键或者我不认识。 3.在一段中文译文后出现一段原文,说明这一段我翻译的不得要领,还忘自己慎重考虑 4.文中翻译的英文出处为DirectX SDk(2010 JUNE)的帮助文档,具体内容请到微软官网下载查阅。 5.由于本人才疏学浅,错误之处在所难免还望您不吝赐教。 6.最后祝大家天天开心~ 指南2:渲染一个三角形 概述: 在前一个指南中,我们创建了一个最简单的Direct3D10应用程序:在一个窗口中输出一种颜色。在这个指南中,我们将扩展这个应用程序实现在窗口中渲染一个三角形。我们将逐一讲解建立三角形相关数据结构的各个过程。最后的输出结构时在窗口中心渲染一个三角形。 三角形元素 一个三角形由它的三个顶点构成。一系列位于不同位置的顶点定义了不同的三角形。为了让GPU能够渲染一个三角形,我们必须告诉它三角形三个顶点的位置。我们以图一(Figure 1)为例,我们将把位置为(0,0,)(0,1)(1,0)的三个点告诉GPU,然后GUP就可以拥有足够的信息来绘制我们想要的三角形。 现在我们知道如果我们想渲染一个三角形就必须把三角形的三个顶点位置告诉GPU。我们如何把这些信息告诉给GPU呢?在Direct3D 10中,顶点信息(比如顶点位置)被存储在一个缓存资源中。我们必须创建一个足够大的顶点缓存来存储三角形三个顶点信息。在Direct3D10中应用程序在创建一个缓存资源时必须以字节的方式指定缓存大小。我们可以知道系统需要为三角形三个顶点分配足够大的空间,但是我们如何知道确切需要多少字节呢?为了回答这个问题我们首先要了解顶点布局(Vertex layout) 输入布局(Input Layout) 一个顶点有一个位置信息。同时往往(More often than not),一个顶点不止包含位置信息,同时还包含属性比如作为一个法线(Normal),一个或者多个颜色,纹理坐标(texture coordinates)(用来做纹理映射)等等。顶点布局就是定义这些属性在内存中如何分布:各种属性的数据类型;各个属性的大小;各个属性在内存中的顺序。因为这些属性通常由不同数据类型的数据构成所以在D3D10中以一个结构体的方式存储。一个的顶点的大小可以很方便的通过结构体的大小获得。(ps.一般用Sizeof()函数)。 在这个指南中,我们仅仅用到顶点的位置信息。因此我们可以定义一个结构体用来包含单一的D3DXVECTOR3(ps.以D3DX开头命名的变量或者函数都是DirectX扩展库中的)。D3DXVERTEX3类型是一个包含三个浮点数元素的向量(vector)(ps.向量是STL即C++标准模板库中的容器,学习D3D了解STL是不现实的,建议百度“STL”获取相关知识。) Struct SimpleVertex { D3DXVERTEX3 pos; }; 现在我们有了一个代表我们顶点的结构体。它专注于在存储顶我们应用程序内存区域内的顶点信息存储(That takes care of storing vertex information in system memory in our application.) 然而,当我们把这个结构体传递给GPU时,实际上我们只是传递了一块内存区域。为了从缓存中提取正确的属性信息,GPU必须要知道我们设置的结构体的布局。为了达到这个要求,我们使用输入布局。 在D3D10中,输入布局是一个让GPU理解顶点描述结构体描述的Direct3D对象(In Direct3D 10, an input layout is a Direct3D object that describes the structure of vertices in a way that can be understood by the GPU)。每一个顶点属性可以被一个D3D10_INPUT_ELEMENT_DESC结构体描述。应用程序定义一个数组包含一个或者多个D3D10_INPUT_ELEMENT_DESC,然后使用这个数组来创建输入布局对象以此来描述顶点。下面是D3D10_INPUT_ELEMENT_DESC的各个字段(files)。 SemanticName (语义名称) 语义名称是一个包含自然语义描述的单词字符串。单词可以是C语言标示符的任意格式,同时也可以随意选择。比如说一个良好的描述顶点位置的语义名称为POSOTION。语义名称不区分大小写(case-sensitive)。 SemanticIndex (语义

文档评论(0)

1亿VIP精品文档

相关文档