请问多纹理混合的一个有关问题
请教多纹理混合的一个问题!
比如有两重纹理,如果我想这两重纹理融合的算法是这样的:取两个纹理颜色最大值作为输出纹理的颜色值。
c = max(a,b)a,b表示两重纹理颜色,c是输出纹理颜色。
比较常见的
m_pIDirect3DDevice->SetTextureStageState(1, D3DTSS_COLORARG2,D3DTA_CURRENT);
m_pIDirect3DDevice->SetTextureStageState(1,D3DTSS_COLORARG1,D3DTA_TEXTURE);
m_pIDirect3DDevice->SetTextureStageState(1,D3DTSS_COLOROP,D3DTOP_ADD);
D3DTOP_ADD表示两重纹理的颜色相加,但是如果是取两重纹理最大值应该做么做呢
说明,我不要一个一个像素处理,这样比较慢,占用CPU也很大。
------解决方案--------------------
让GPU来比较,而不是CPU
------解决方案--------------------
------解决方案--------------------
得到rendersuface,在shader中写算法。因为像素颜色最大值rgb3个分量你要逐个判断是否最大的。
比如有两重纹理,如果我想这两重纹理融合的算法是这样的:取两个纹理颜色最大值作为输出纹理的颜色值。
c = max(a,b)a,b表示两重纹理颜色,c是输出纹理颜色。
比较常见的
m_pIDirect3DDevice->SetTextureStageState(1, D3DTSS_COLORARG2,D3DTA_CURRENT);
m_pIDirect3DDevice->SetTextureStageState(1,D3DTSS_COLORARG1,D3DTA_TEXTURE);
m_pIDirect3DDevice->SetTextureStageState(1,D3DTSS_COLOROP,D3DTOP_ADD);
D3DTOP_ADD表示两重纹理的颜色相加,但是如果是取两重纹理最大值应该做么做呢
说明,我不要一个一个像素处理,这样比较慢,占用CPU也很大。
------解决方案--------------------
让GPU来比较,而不是CPU
------解决方案--------------------
------解决方案--------------------
得到rendersuface,在shader中写算法。因为像素颜色最大值rgb3个分量你要逐个判断是否最大的。