图形开发确是一件麻烦事,把效果弄好就不易,还得忍受不同卡不同驱动带来的差异化问题,比如这几天遇到的与驱动有关的问题就让我吐血,素闻N卡驱动比A卡驱动稳定,原先一直半信半疑,因为刚好我家里的机器是A卡,公司的机器是N卡,因此在开发引擎的过程中对两者间的差异有了切身的体会.以下记下碰到的这两个问题,留待日后查询
问题1:引擎的地形在公司的9600GT上跑一直都有1000fps左右,前些天拿回到家里的4850跑下一看,结果大跌眼镜,FPS掉到了100,9600GT和4850应该说是同一级别的显卡,虽说貌似A卡在游戏这一项的性能不如N卡,但也不能给我锉到差10倍吧,于是开debug 版DX调试看看,发现SetIndices时不时报参数索引长度与流大小不一致错误,再一跟踪,原来由于疏忽,主线程某个函数修改了渲染线程中正在使用的索引缓冲指针,导致SetIndice传的IndexBuffer和VertexBuffer数据对不上,表现到视觉上是远处的地形会时不时闪烁一下,这个现象在9600GT的机器上也有,不过由于当时专注于效率问题还没空去查,想不到在A卡上竟然会导致FPS大幅降低,呵呵,改正这个BUG后FPS上到了1K,与9600GT差不多
问题2:还是A卡和 N卡的效率差异问题,看来只有效率能挑动我的神经了,呵呵。。这次是模型的渲染出了问题,同屏渲染100个骨骼动画模型 + 地形9600GT有200FPS,4850只有10FPS不到。。开debug版DX调试没有发现任何问题,再用PIX运行帧分析,按F12的一刻直接崩掉,输出的log也没发现有什么问题,崩溃。。总而言之,费了很大功夫,终于发现原来是因为没有清空instancing渲染状态,导致后面的所有模型都多画了N次,还是疏忽阿,为啥在N卡上没有问题?
关于这里面深层次的原因我没去追究,有明白的朋友一定告诉我,总体上, N卡驱动所表现出的容错性的确比A卡驱动好,但换个角度来看,也许隐藏了错误并不是件好事,A卡这样更加有助于开发者早期发现错误,避免拖到后面付出更大的代价
posted on 2010-09-22 13:32
清風 阅读(3344)
评论(4) 编辑 收藏 引用 所属分类:
图形