|
|
用SimpleSample那个工程,加入如下代码,没有显示,怎么看都看不出来错误。
首先view没问题
D3DXVECTOR3 vecEye(0.0f, 0.0f, -5.0f);
D3DXVECTOR3 vecAt (0.0f, 0.0f, 10.0f);
g_Camera.SetViewParams( &vecEye, &vecAt );
透视模型也没问题
// Setup the camera's projection parameters
float fAspectRatio = pBackBufferSurfaceDesc->Width / (FLOAT)pBackBufferSurfaceDesc->Height;
g_Camera.SetProjParams( D3DX_PI/4, fAspectRatio, 0.1f, 1000.0f );
g_Camera.SetWindow( pBackBufferSurfaceDesc->Width, pBackBufferSurfaceDesc->Height );
加入的代码如下:
LPDIRECT3DDEVICE9 g_pd3dDevice = NULL;
LPDIRECT3DTEXTURE9 g_pTexture = NULL;
void D3D_init(IDirect3DDevice9* pd3dDevice);
void Draw_Background();
LPDIRECT3DVERTEXBUFFER9 g_pVB = NULL; // Buffer to hold vertices
struct CUSTOMVERTEX
{
D3DXVECTOR3 position; // The position
D3DCOLOR color; // The color
FLOAT tu, tv;
};
#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE|D3DFVF_TEX1)
void Draw_Background()
{
g_pd3dDevice->SetTexture( 0, g_pTexture );
g_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_MODULATE );
g_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
g_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE );
g_pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_DISABLE );
g_pd3dDevice->SetStreamSource( 0, g_pVB, 0, sizeof(CUSTOMVERTEX) );
g_pd3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX );
D3DXMATRIX mat;
D3DXMatrixIdentity(&mat);
D3DXMatrixTranslation( &mat, 0.0f,3.0f,0 );
D3DXMATRIX oldmat;
g_pd3dDevice->GetTransform(D3DTS_WORLD,&oldmat);
D3DXMatrixMultiply(&oldmat,&oldmat,&mat);
g_pd3dDevice->SetTransform( D3DTS_WORLD, &oldmat );
g_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 2);
}
void D3D_init(IDirect3DDevice9* pd3dDevice)
{
g_pd3dDevice = pd3dDevice;
if( FAILED( D3DXCreateTextureFromFile( g_pd3dDevice, L"debug//luxoom_back.bmp", &g_pTexture ) ) )//data//luxoom_back
{
MessageBox(NULL, L"Could not find luxoom_back.bmp", L"D3D_init", MB_OK);
}
if( FAILED( g_pd3dDevice->CreateVertexBuffer( 4*sizeof(CUSTOMVERTEX),
0, D3DFVF_CUSTOMVERTEX,
D3DPOOL_DEFAULT, &g_pVB, NULL ) ) )
{
assert(false);
}
CUSTOMVERTEX* pVertices;
g_pVB->Lock( 0, 0, (void**)&pVertices, 0 );
float size = 3 ;
CUSTOMVERTEX cvVertices[] =
{
{D3DXVECTOR3(-size, -size, 0), D3DCOLOR_XRGB(0, 0, 255),0,0,}, //Vertex 0 - Blue
{D3DXVECTOR3(-size,size, 0), D3DCOLOR_XRGB(255, 0, 0),0,1,}, //Vertex 1 - Red
{D3DXVECTOR3(size, -size, 0), D3DCOLOR_XRGB(255, 0, 0),1,1,}, //Vertex 2 - Red
{D3DXVECTOR3(size, size, 0), D3DCOLOR_XRGB(0, 255, 0),1,0,}, //Vertex 3 - Green
};
memcpy(pVertices, cvVertices, sizeof(cvVertices));
g_pVB->Unlock();
} |
|