写个最简单的shader,显示solid color的物体,只需要坐标和颜色,在app层用0xaarrggbb 32位格式,在CreateVertexDeclaration里没有使用D3DDECLTYPE_D3DCOLOR 而是用了D3DDECLTYPE_UBYTE4N ,结果是r跟b调了个位置,实在不解,后来仔细查看sdk,发现
D3DDECLTYPE_D3DCOLOR
Four-component, packed, unsigned bytes mapped to 0 to 1 range. Input is a D3DCOLOR and is expanded to RGBA order.
原来对于D3DDECLTYPE_D3DCOLOR,驱动自动帮忙转换成rgba,从低到高排列,也就是shader得到的参数float4(r,g,b,a),完全正确,而对于D3DDECLTYPE_UBYTE4N ,直接将我的32bit的0xaarrggbb理解为,x86平台little endian格式,从低到高位理解为float(b,g,r,a),结果就是,b跟r调了个位置。哈哈。。。
posted on 2007-11-07 09:11
Sherk 阅读(1189)
评论(0) 编辑 收藏 引用