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

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值