D3D10指的南2-2.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
声明: ? 2012 刘邓 hfutld@yeah.net. All rights reserved. 翻译说明: 1./ 这个符号出现在我翻译一个单词或者词组不确定时可能的选项 2.() 出现在一个汉语词组后,标示这个单词比较关键或者我不认识。 3.在一段中文译文后出现一段原文,说明这一段我翻译的不得要领,还忘自己慎重考虑 4.文中翻译的英文出处为DirectX SDk(2010 JUNE)的帮助文档,具体内容请到微软官网下载查阅。 5.由于本人才疏学浅,错误之处在所难免还望您不吝赐教。 6.最后祝大家天天开心~ 指南2-2:渲染一个三角形(续) Ps.接指南2-1 顶点布局(Vertex Layout) 在下一个教程中,我们将解释技术对象(technique objecy)以及相关的着色器。现在我们只关注于为这项技术创建一个Direct3D10顶点布局对象。然而我们会发现这项技术和顶点布局是紧密结合在一起的。原因在于在创建顶点布局对象时需要用到顶点着色器输入签名(signature)。我们首先调用这项技术的GetPassByIndex()函数来获取一个代表这项技术的第一个传递的效果传递对象。然后我们调用这个传递对象的GetDesc()函数来获得一个传递描述结构体。在这个结构体内有有一个名为pIAInputSignature的字段指向这个传递对象中顶点着色器的输入签名的二元数据。一旦我们获取了这个数据,就可以调用ID3D10Device::CreateInputLayout()函数来创建一个顶点布局对象,然后调用ID3D10Device::IASetInputLayout()函数来设置它为活动的顶点布局。完成上述内容的代码如下: // Create the input layout D3D10_PASS_DESC PassDesc; g_pTechnique-GetPassByIndex( 0 )-GetDesc( PassDesc ); if( FAILED( g_pd3dDevice-CreateInputLayout( layout, numElements, PassDesc.pIAInputSignature, PassDesc.IAInputSignatureSize, g_pVertexLayout ) ) ) return FALSE; // Set the input layout g_pd3dDevice-IASetInputLayout( g_pVertexLayout ); 创建顶点缓存 在初始化过程中另外一件需要完成的工作是为顶点数据创建存储的顶点缓存。在D3D10中创建一个顶点缓存需要填充2个结构体:D3D10_BUFFER_DESC以及D3D10_SUBRESOURSE_DATA,然后调用ID3D10device::CreatBuffer()函数。D3D10_BUFFER_DESC描述需要创建的顶点缓存对象,而D3D10_SUBRESOURCE_DATA则描述在创建顶点缓存是确切复制到顶点缓存内的值。 创建和初始化顶点缓存是一起立刻完成的,因此稍后我们不必再去初始化缓存。将要被复制到顶点缓存的是一系列的顶点:一个包含3个SimpleVertex结构体的数组。在这个顶点数组内的坐标系被选取因此我们可以发现一个使用我们着色器渲染的三角形出现在窗口程序的中间。当顶点缓存创建完毕后我们调用ID3D10Device::IASetVertexBuffers()函数来把它绑定到设备上去。全部代码如下: // Create vertex buffer //创建顶点缓存 SimpleVertex vertices[] = { D3DXVECTOR3( 0.0f, 0.5f, 0.5f ), D3DXVECTOR3( 0.5f, -0.5f, 0.5f ), D3DXVECTOR3( -0.5f, -0.5f, 0.5f ), }; D3D10_BUFFER_DESC bd; bd.Usage = D3D10_USAGE_DEFAULT; bd.ByteWidth = sizeof( SimpleVertex ) * 3; bd.BindFlags = D3D10_BIND_VERTEX_BUFFER; bd.CPUAccessFlags = 0; bd.MiscFlags = 0; D3D10_SUBRESOURCE_DATA InitData; InitData.pSysMem = vertices; if( FAILED( g_pd3dDevice-CreateBuffer( bd, InitData, g_pVertexBuffer ) ) )

文档评论(0)

xiaofei2001127 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档