2012年4月1日

如何高效更新Direcx11的各种资源与状态

摘要: 在DX9时代,很多渲染瓶颈就出现在状态与资源的更新,大量本该简化的Draw调用。虽然DX10后对draw进行了一些优化,但是还不足以让你可以忽略draw的调用方式与次数。我们应该在应用程序的调试版本中恰当使用debug runtime,根据debugRT提供的性能警告来优化程序。为什么说draw调用的方式很影响性能呢?因为每当你调用一次draw,都会牵一发而动全身,影响到其他状态的更新。一般draw都会引起如下状态的变动:1.const buffer的更新。2.资源的变化(顶点缓冲,索引缓冲,纹理等等)。3.InputLayout的变化。Constant Buffer常量缓冲是保存shader 阅读全文

posted @ 2012-04-01 17:26 Meta.Grfx 阅读(1590) 评论(0) 推荐(0)

根据模型顶点坐标计算法线

摘要: 虽然读取了3ds文件,但是3ds文件里并不包含顶点法线。为了计算光照,我们需要手工计算法线。过程如下:三个不共线点构成一个三角形:计算方法:向量ab与向量ac的叉乘得到过点a垂直于三角形abc所在平面的一条直线,这条垂线就是顶点a的法线。下面就是代码:【修正了法线计算bug,2012.04.04】 1 void CModel3ds::CalcNormals() 2 { 3 for(int i = 0; i<m_PolygonNum; ++i) 4 { 5 Vector3 v1 = Vector3_Sub(Vector3(m_pVBbuff[m_pIBbuff[i... 阅读全文

posted @ 2012-04-01 15:34 Meta.Grfx 阅读(8535) 评论(4) 推荐(0)

导航