D3D 用例证的代码贴图片为什么覆盖一层红色
D3D 用例子的代码贴图片为什么覆盖一层红色
这是源图片的

这是进入D3D后的

代码
------解决方案--------------------
看不到其它的代码,只能猜测一下:
可能是灯光材质的问题
也就是你设置的灯光颜色只包含红色,或者你的材质、漫反射等相关颜色只设置为红色,这样其它颜色无法起作用。
你可以关闭光源试试看效果,就知道是否这个原因了。
这是源图片的
这是进入D3D后的
代码
if( FAILED( D3DXCreateTextureFromFileEx(
g_pd3dDev, // D3D设备对象
"b_110.bmp", // 指明加载图像位置的字符串
1280, // 图像宽度
720, // 图像高度
1, // 图片的图层,一般用D3DX_DEFAULT,与图像质量有关
0, //设定这个纹理的使用方法
D3DFMT_UNKNOWN, // 每个颜色成分使用的位数
D3DPOOL_MANAGED, // 纹理对象驻留的内存类别
D3DX_DEFAULT, // 处理图像质量,并控制D3D填充图像数据的方法
D3DX_DEFAULT, // 像素过滤方式
NULL, // 透明色,设定这个颜色,在显示时,这图像中的这个颜色将忽略
NULL, // 记录载入图片信息
NULL, // 记录调色板信息
&g_pTex) ) ) // 用来储存载入图片的纹理对象实例
{
MessageBox(NULL, "Could not find 110.bmp", "eror", MB_OK);
return E_FAIL;
}
struct CUSTOMVERTEX
{
FLOAT x, y, z;
unsigned long color;
FLOAT u, v;
};
#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE |D3DFVF_TEX1)
CUSTOMVERTEX v[] =
{
{-0.3f, -0.4f, 0, D3DCOLOR_ARGB(255,255,255,255), 0, 1},
{0.3f, -0.4f, 0, D3DCOLOR_ARGB(255,255,255,255), 1, 1},
{0.3f, 0.4f, 0, D3DCOLOR_ARGB(255,255,255,255), 1, 0},
{0.3f, 0.4f, 0, D3DCOLOR_ARGB(255,255,255,255), 1, 0},
{-0.3f, 0.4f, 0, D3DCOLOR_ARGB(255,255,255,255), 0, 0},
{-0.3f, -0.4f, 0, D3DCOLOR_ARGB(255,255,255,255), 0, 1}
};
------解决方案--------------------
看不到其它的代码,只能猜测一下:
可能是灯光材质的问题
也就是你设置的灯光颜色只包含红色,或者你的材质、漫反射等相关颜色只设置为红色,这样其它颜色无法起作用。
你可以关闭光源试试看效果,就知道是否这个原因了。