这一周基本都是在应对上线前的bugfix, 发现了很多虽然很基础但是却定位起来有点漫长的问题。
c++ 深拷贝 和 浅拷贝
大气的新加的参数对象中包含了指针,默认使用浅拷贝,导致指针参数随着实际指向参数的变化而变化,需要用memcopy进行深拷贝。
https://blog.csdn.net/u010700335/article/details/39830425
但当数据成员中有指针时,如果采用简单的浅拷贝,则两类中的两个指针将指向同一个地址,当对象快结束时,会调用两次析构函数,而导致指针悬挂现象,所以,此时,必须采用深拷贝。
深拷贝与浅拷贝的区别就在于深拷贝会在堆内存中另外申请空间来储存数据,从而也就解决了指针悬挂的问题。简而言之,当数据成员中有指针时,必须要用深拷贝。
所有的if判断之后的else都要加日志
geometry shader load 需要时间,多线程。
这个问题导致的现象是选角界面的大气有的时候是黑的,有的时候是好的,复现这个bug的时候感觉很匪夷所思,最后定位到的问题很傻叉 —- 大气预计算的时候加了vertex和pixel shader 是否加载好的判断,但是没有对geometry shader做判断,加了判断之后忘了加else的日志打印,加了日志以后很快就发现是因为geometry shader没有加载好导致预计算失败。后来想了想,底层实现的时候应该对这类情况都加上日志打印能比较快的暴露问题。
AMD
有一个很诡异的问题,部分AMD显卡的体积云会有马赛克的情况,render doc debug的时候值又是对的。后来还是在组长的帮助下才发现,体积云的部分贴图没有多个LOD level,但是sample的时候没有强指定LOD 0,N卡的错误兼容性很好,但是A卡貌似要做到0错误,所以以后写shader的时候也要注意下A卡的适配。