为什么贴图放大不能满窗口?
以下是部分关键代码:
struct Vertex
{
float x, y, z, rhw;
unsigned long color;
float u, v;
} ;
#define FVF (D3DFVF_DIFFUSE | D3DFVF_XYZRHW | D3DFVF_TEX1)
然后,设置正交平等投影:
D3DXMatrixOrthoLH(&mat, 800, 600, 0.0, 1.0);
然后,用Vertex定义四个顶点:
Vertex vertices[4] = {
{ 0, 0, 1, 0xFFFFFFFF, 0, 0 },
{ 800, 0, 1, 0xFFFFFFFF, 1, 0 },
{ 800, 600, 1, 0xFFFFFFFF, 1, 1 },
{ 0, 600, 1, 0xFFFFFFFF, 0, 1 } };
接下来是大循环的Render:
d3ddevice->SetTexture(0, texture);
d3ddevice->SetTextureStageState(....);
d3ddevice->DrawPrimitiveUp(.....);
texture是一张256*256的纹理图片,载入在里面的图像是A8R8G8B8的256*256位图,是填满了整张纹理的。结果,画出来的纹理却没有占满整个窗口。
这很奇怪,因为顶点在设置的时候,分别是应该铺在窗口的四个角上,应该会放大并填满整个窗口的。但事实上其右边和下边总是差100多个像素的宽度没有被填上。
请问这是为什么?