最近又犯傻了--我的傻事收集加连载

傻事年年干,只是最近干的多。
这几天在做Ray Tracer , 所有的ray和面求交通通交给普通的Rasterizer来做。于是乎我干了件傻的事情。 对于需要保存float结果的buffer来说我必须要选择R32F格式的rendertarget,R32F格式的rt是不会将数据clamp到(0-1.0f)的。结果,我的模型又选择了个带alpha blending的材质,于是杯具出现了。我的场景怎么看都是半透的,说是半透呢,又不完全是半透。SB的我,老认为是depth出问题了,瞪大我这双老眼看了半天没结果。倒揪出N多个代码的其它bug。

这个还不是最傻的,前几天对渲染队列进行排序,我的渲染队列是有优先级的。优先级高的队列先绘制。比如不带半透的先绘制。带透明后绘制。overlay 队列最后绘制。优先级写在配置文件里。加载了配置文件,创建了渲染队列后需要对渲染队列进行排序。我是这么干的:
class xRenderQueue
{
public:
bool operator < (const xRenderQueue& rhv ) const
{
return this->m_priority < rhv.m_priority;
}
};

typedef std::vector<xRenderQueue*> vRenderQueues;
vRenderQueues m_vQueues;
std::sort(m_vQueues.begin() , m_vQueues.end() );
我还傻乎乎的在operator <里下了断点,,两个多小时急的我干瞪眼。汗一个。


PS: 今天上午倒了个模型出来,死活看不到角色的脑袋。检查了一个多小时,最后发现某人给我的模型脑袋贴图的alpha通道竟然是全黑的。囧....

你可能感兴趣的:(最近又犯傻了--我的傻事收集加连载)