|
|
非2的次方尺寸的??D?理
我有一??"非2的次方尺寸的?D?n"(286x203)
我依???叽缳N到?窗上,???D像???模糊.
???一下要如何才可以?"非2的次方尺寸的?D?n"到?面上而不失真
我想到的方法是做一??大的??D,再?X取其中一小部份
BOOL DoInit()
{
D3DPRESENT_PARAMETERS d3dpp;
D3DDISPLAYMODE d3ddm;
BYTE *Ptr;
#define PNG_WIDTH 286.0f
#define PNG_HEIGHT 203.0f
sVertex Verts[4] = {
{ 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f },
{ PNG_WIDTH, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f },
{ 00.0f, PNG_HEIGHT, 1.0f, 1.0f, 0.0f, 1.0f },
{ PNG_WIDTH, PNG_HEIGHT, 1.0f, 1.0f, 1.0f, 1.0f }
};
// Do a windowed mode initialization of Direct3D
if((g_pD3D = Direct3DCreate8(D3D_SDK_VERSION)) == NULL)
return FALSE;
if(FAILED(g_pD3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &d3ddm)))
return FALSE;
ZeroMemory(&d3dpp, sizeof(d3dpp));
d3dpp.Windowed = TRUE;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.BackBufferFormat = d3ddm.Format;
d3dpp.EnableAutoDepthStencil = FALSE;
if(FAILED(g_pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, g_hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,
&d3dpp, &g_pD3DDevice)))
return FALSE;
// Create the vertex buffer and set data
g_pD3DDevice->CreateVertexBuffer(sizeof(sVertex)*4, 0, VERTEXFVF, D3DPOOL_DEFAULT, &g_pVB);
g_pVB->Lock(0,0, (BYTE**)& tr, 0);
memcpy(Ptr, Verts, sizeof(Verts));
g_pVB->Unlock();
// Load the texture map
D3DXCreateTextureFromFile(g_pD3DDevice, "LoginBG.png", &g_pTexture);
return TRUE;
} |
|