今天在搞dbbh.js的时候,想到一个问题,啥问题呢,先看看情况
画2个材质不相同的box的时候
首先开始createCommandEncoder,然后beginRenderPass,分歧就在这里了
第一个box,他有自己的pipeline,第二个也有,那么这里就要切换一次pipeline
emmmm,那这个属性直接挂material上?
obj.material.pipeline?
感觉太粗鲁了,改一点?
pipelineId?
嗯 可以
那么维护一个pipelinePool,是一个map<key, pipeline>
key用啥呢。。再说吧,反正就是状态加shader名字这类组合感觉还行
于是代码就可以这样
forDCList(dc=>{const currentPipeline = PipelinePool.getPipeline(dc.pipelineId);if(preCurrentPipeline!==currentPipeline){changeCurrentPipeline();}
})
不知道大家伙还有别的想法么?。?我感觉这样还行