首先在定义顶点格式时,顶点里声明了哪些变量,定义灵活顶点格式时必须一同加上
如:顶点格式定义了DWORD color;
即使构造函数里没有加上这个,在定义灵活顶点格式时加上。D3DFVF_DIFFUSE
当加上纹理后,灵活顶点格式还要加上:D3DFVF_TEX1,它是说明我们的顶点结构中包含了一个纹理坐标
导入纹理:
IDirect3Dtexture9 *tex;
第一步:创建纹理
D3DXCreateTextureFromFile( device, "..jpg", &tex);
第一个参数为设备,第二个参数为图像,第三个参数为返回的纹理。
第二步:设置纹理
Device->SetTexture( 0, tex);
过滤器:
过滤器是一种Direct3D用它来帮助变形图片的平滑技术
有三种:
第一种 D3DTEXF_POINT:这是默认的过滤返回最差的效果,但最快
Device->SetSamplerState( 0, D3DSAMP_MAGFILTER, D3DTEXF_POINT);
Device->SetSamplerState( 0, D3DSAMP_MINFILTER, D3DTEXF_POINT)
第二种 D3DTEXF_LINEAR: 这种过滤产生还算比较好的效果。书上推荐使用
Device->SetSamplerState( 0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
Device->SetSamplerState( 0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR)
第三种 D3DTEXF_ANISOTROPIC:过滤产生最好的效果,但时间最长。
Device->SetSamplerState( 0, D3DSAMP_MAGFILTER, D3DTEXF_ANISOTROPIC);;
Device->SetSamplerState( 0, D3DSAMP_MINFILTER, D3DTEXF_ANISOTROPIC);
当用第三种时,必须设置D3DSAMP_MAXANISOTROPY等级,
Device->SetSamplerState( 0, D3DSAMP_MAXANISOTROPY, 4);
第四种 Mipmaps过滤器
Device->SetSamplerState( 0, D3DSAMP_MIPFILTER, Filter);
Filter有三个选项:
D3DTEXF_NONE 不使用mipmapa
D3DTEXF_POINT
D3DTEXF_LINEAR
寻址模式
第一种 环绕纹理寻址模式
Device->SetSamplerState( 0, D3DSAMP_ADDRESSU, D3DTADDRESS_WRAP);
Device->SetSamplerState( 0, D3DSAMP_ADDRESSV, D3DTADDRESS_WRAP)
第二种 边框颜色纹理寻址模式
Device->SetSamplerState( 0, D3DSAMP_ADDRESSU, D3DTADDRESS_BORDER);
Device->SetSamplerState( 0, D3DSAMP_ADDRESSV, D3DTADDRESS_BORDER);
Device->SetSamplerState( 0, D3DSAMP_BOREDERCOLOR, 0x000000ff);
第三种 截取纹理寻址模式
Device->SetSamplerState( 0, D3DSAMP_ADDRESSU, D3DTADDRESS_CLAMP);
Device->SetSamplerState( 0, D3DSAMP_ADDRESSV, D3DTADDRESS_CLAMP);
第四种 镜像纹理寻址模式
Device->SetSamplerState( 0, D3DSAMP_ADDRESSU, D3DTADDRESS_MIRROR);
Device->SetSamplerState( 0, D3DSAMP_ADDRESSV, D3DTADDRESS_MIRROR);