some d3d problem

遇到些蛋疼无聊的问题,share下

 

1, NDEBUG preprocessor:

怪了,以为debug下ok就全ok,release下不就是开个优化么。

结果无穷多的无语的问题困扰了很久,遇到如下这些:

Direct3D9: (ERROR) :Need to call BeginScene before rendering.(我当然是call了BeginScene)

DrawIndexedPrimitive也会fail

DrawIndexedPrimitive内部会有long memory exception...

 

实在无语,不知道怎么回事,只好和debug版一项项比较,最后发现是preprocessor NDEBUG的问题。

换成RELEASE就好了.

 

进一步尽到dxsdk的include下面也找不到NDEBUG相关定义的东西。

就不再花时间了。

 

2, d3d render state cache

本来在console上面因为driver给的灵活性很大(也就是给实现的东西很少),对rendertstate这种东西做cache进而避免掉重复设置是很有效的优化。

(之前这里认识不足,sorry,幸亏楼下有人指出,thx)

pc上create device的时候可以指定是否来做cache等管理的,如果选择puredevice就可以不作任何这种管理,就可以自己来弄了。

我想可能要根据pix截出来的东西来看最准了。

 

有种情况pc上是有可能自动cache的,也就是内部就不用自己去做和driver一样的cache了。

可以自己开d3d debug模式下,输出所有log会有这种东西:

Direct3D9: (WARN) :Ignoring redundant SetRenderState - 7

 

 

 


原文链接: http://blog.csdn.net/ccanan/article/details/5451650

你可能感兴趣的:(some d3d problem)