DrawIndexedPrimitive参数详解-阿里云开发者社区

开发者社区> 狂斩一条龙> 正文

DrawIndexedPrimitive参数详解

简介: HRESULT DrawIndexedPrimitive( [in]  D3DPRIMITIVETYPE Type, [in]  INT BaseVertexIndex, [in]  UINT MinIndex, [in]  UINT NumVertices, [in]  UINT StartIndex, [in]  UINT PrimitiveCount ); MinIndex:这个是相对于VertexBuffer而言,它是指绘画中用到的VertexBuffer的最小索引,感觉他只是提示IndexBuffer数组里最小的Index是值。
+关注继续查看
HRESULT DrawIndexedPrimitive(
  [in]  D3DPRIMITIVETYPE Type,
  [in]  INT BaseVertexIndex,
  [in]  UINT MinIndex,
  [in]  UINT NumVertices,
  [in]  UINT StartIndex,
  [in]  UINT PrimitiveCount
);
MinIndex:这个是相对于VertexBuffer而言,它是指绘画中用到的VertexBuffer的最小索引,感觉他只是提示IndexBuffer数组里最小的Index是值。网上的有一种扯蛋的说法误导了我很久。实际上我觉得这个参数一点用都没有,这个参数可以通过StartIndex和PrimitiveCount遍历IndexBuffer算出来。而且实际中我测试这个参数好像也是没有任何用处的,某种意义上,他可以为导出顶点的起始索引减法有帮助。
 
NumVertices:它不是实际画的顶点数目,而是使用到的VertexBuffer区域大小,比如要画一个三角形,有可能NumVertices=4,说明中间有一个顶点没有用到如下图所示:


MinIndex和NumVertices决定了本次绘画时,用到的VertexBuffer 顶点区间。
StartIndex:它是对于IndexBuffer而言的,IndexBuffer使用的开始位置。
BaseVertexIndex:他的影响是每一个vb Indexbuffer的值都要加上这一个数值见见图1,,顶点缓存的第一个顶点索引的偏移位置,偏移是因为当多个顶点缓存合并成一块全局缓存中时每块都有一个基准的offset值,例如合并多个顶点缓存减少渲染batch数,提高性能,但是较少使用。





决定VertexBuffer在绘图中使用到的顶点区间:
起始:
1.SetStreamSource 中的Offset
2.如果BaseVertexIndex不为0,则代表,IndexBuffer每一个值都要加上这个值。所以BaseVertexIndex+Offset就可以被认为是VertexBuffer的起始位置。
3.如果MinIndex不为0,有两种可能,未经BaseVertexIndex转化的话,MinIndex是50,这样在VertexBuffer的时候不可以加上这个MinIndex,这样起始位置就是Offset+BaseVertexIndex+(MinIndex-BaseVertexIndex)。如果经过BaseVertexIndex转化之后的话,Minindex是0,则起始位置就是Offset+BaseVertexIndex+MinIndex。
大小:
不知道MinIndex对NumVertice的影响在实际中要查看一下。

关于IndexBuffer区间:
起始:直接为startIndex
大小:目前只可以通过按prim计算。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
window.open的例子和使用方法以及参数说明(完整版)
一、window.open()支持环境: JavaScript1.0+/JScript1.0+/Nav2+/IE3+/Opera3+ 二、基本语法: window.open(pageURL,name,parameters) 其中: pageURL 为子窗口路径 ...
592 0
【Spark Summit East 2017】将Apache Spark MLlib扩展至十亿级别的参数
本讲义出自Yanbo Liang在Spark Summit East 2017上的演讲,主要介绍了为了应对像广告点击率预测和神经网络这样的应用程序需要从大量的数据中获取数十亿参数的挑战而研发的MLlib自由向量L-BFGS,它能解决Spark SQL框架中训练集经常产生的数十亿参数问题,演讲中展示了
2023 0
Unity获取方法的参数和方法名称
public IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext) { Console.
640 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
4623 0
AI:人工智能概念之机器学习、深度学习中常见关键词、参数等中英文对照(绝对干货)(六)
本博主基本收集了网上所有有关于ML、DL的中文解释词汇,机器学习、深度学习中常见关键词、参数等中英文对照,如有没有涉及之处,请留言,本博主将持续续修改、更新!圆小白自学ML、DL之梦!
27 0
人工智能地震监测系统上线:2秒报出地震参数
近日,由中国科技大学与中国地震局合作研发的“智能地动”系统项目组宣布:利用该人工智能地震监测系统,仅需要1—2秒时间就能报出所有地震震源参数,引起业内广泛关注。
557 0
+关注
狂斩一条龙
惯用c++,在windows平台做应用开发和底层研究,并对ua语言有深入的了解
476
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载