DirectX problem with texture

I have an code that written with C++6 and DirectX9 under windows XP.
now i run that code with visual stdio 2010 and DXSDK_Jun10 and windows7 .but Texture in this code don't show on CUBE.
please help me to show texture.
//*******************************************************************************
//*******************************************************************************

#include "d3dUtility.h"
#include "cube.h"
#include "vertex.h"

//
// Globals
//

IDirect3DDevice9* Device = 0;

const int Width = 640;
const int Height = 480;

Cube* Box = 0;
IDirect3DTexture9* Tex = 0;

//
// Framework Functions
//
bool Setup()
{
//
// Create the cube.
//

Box = new Cube(Device);

//
// Set a directional light.
//

D3DLIGHT9 light;
::ZeroMemory(&light, sizeof(light));
light.Type = D3DLIGHT_DIRECTIONAL;
light.Ambient = D3DXCOLOR(0.8f, 0.8f, 0.8f, 1.0f);
light.Diffuse = D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f);
light.Specular = D3DXCOLOR(0.2f, 0.2f, 0.2f, 1.0f);
light.Direction = D3DXVECTOR3(1.0f, -1.0f, 0.0f);
Device->SetLight(0, &light);
Device->LightEnable(0, true);

Device->SetRenderState(D3DRS_NORMALIZENORMALS, true);
Device->SetRenderState(D3DRS_SPECULARENABLE, true);

//
// Create texture.
//
HRESULT x= D3DXCreateTextureFromFileW(
Device,
(LPCWSTR)"crate.jpg",
&Tex);


//
// Set Texture Filter States.
//

Device->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
Device->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
Device->SetSamplerState(0, D3DSAMP_MIPFILTER, D3DTEXF_LINEAR);

//
// Set the projection matrix.
//

D3DXMATRIX proj;
D3DXMatrixPerspectiveFovLH(
&proj,
D3DX_PI * 0.5f, // 90 - degree
(float)Width / (float)Height,
1.0f,
1000.0f);
Device->SetTransform(D3DTS_PROJECTION, &proj);

return true;
}

void Cleanup()
{
d3d::Delete<Cube*>(Box);
d3d::Release<IDirect3DTexture9*>(Tex);
}

bool Display(float timeDelta)
{
if( Device )
{
//
// Update the scene: update camera position.
//

static float angle = (3.0f * D3DX_PI) / 2.0f;
static float height = 2.0f;

if(GetAsyncKeyState(VK_LEFT) & 0x8000f )
angle -= 0.5f * timeDelta;

if( ::GetAsyncKeyState(VK_RIGHT) & 0x8000f )
angle += 0.5f * timeDelta;

if( ::GetAsyncKeyState(VK_UP) & 0x8000f )
height += 5.0f * timeDelta;

if( ::GetAsyncKeyState(VK_DOWN) & 0x8000f )
height -= 5.0f * timeDelta;

D3DXVECTOR3 position( cosf(angle) * 3.0f, height, sinf(angle) * 3.0f );
D3DXVECTOR3 target(0.0f, 0.0f, 0.0f);
D3DXVECTOR3 up(0.0f, 1.0f, 0.0f);
D3DXMATRIX V;
D3DXMatrixLookAtLH(&V, &position, &target, &up);

Device->SetTransform(D3DTS_VIEW, &V);

//
// Draw the scene:
//

Device->Clear(0, 0, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 0xffffffff, 1.0f, 0);
Device->BeginScene();

Device->SetMaterial(&d3d::RED_MTRL);
Device->SetTexture(0, Tex);

Box->draw(0, 0, 0);

Device->EndScene();
Device->Present(0, 0, 0, 0);
}
return true;
}

//
// WndProc
//
LRESULT CALLBACK d3d::WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch( msg )
{
case WM_DESTROY:
::PostQuitMessage(0);
break;

case WM_KEYDOWN:
if( wParam == VK_ESCAPE )
::DestroyWindow(hwnd);
break;
}
return ::DefWindowProc(hwnd, msg, wParam, lParam);
}

//
// WinMain
//
int WINAPI WinMain(HINSTANCE hinstance,
HINSTANCE prevInstance,
PSTR cmdLine,
int showCmd)
{
if(!d3d::InitD3D(hinstance,
Width, Height, true, D3DDEVTYPE_REF, &Device))
{
::MessageBox(0, (LPCWSTR)"InitD3D() - FAILED", 0, 0);
return 0;
}

if(!Setup())
{
::MessageBox(0, (LPCWSTR)"Setup() - FAILED", 0, 0);
return 0;
}

d3d::EnterMsgLoop( Display );

Cleanup();

Device->Release();

return 0;
}
//***************************************************************************
//***************************************************************************
Last edited on
Topic archived. No new replies allowed.