这是精度问题,D3DFMT_A8R8G8B8说明每个通道只有2^8=256个级别,在显卡内并不是浮点数,所以这样渲染结果会趋向于一个常数(不一定是0).
如果开始的纹理颜色较亮(大于右边的值),最后颜色应该在( 25/255, 25/255, 25/255, 1 ),因为25X0.98 = 24.5约=25,小于这个值颜色就应该不变了.同理X0.9会趋向 5/255.
这样可以推出,要最后得到黑色,那么应该乘以一个小于0.5的值.
你可以这样验证一下,用白色纹理,把纹理采样改为POINT,然后顶点色( 0.98, 0.98,0.98,1 ),
BLEND,FOG,SPECULAR,DITHER等关掉.等颜色稳定,用D3DXSAVESURFACETOFILE存下RT,再用PS打开PICK颜色看看,理论上RGB应该都等于25的.
我也没具体试过,但理论推导上是这样的.你试试吧. |