안녕하세요.. Sprite의 draw메소드를 이용해서 화면에 이미지를 디스플레이 하고자 하는데요 ..
파일로부터 텍스쳐를 읽어와서 드로우하는 방법 말고,
제가 직접 이미지 데이터를 넣어서 화면에 출력하고자 하는데 클리어화면만 나오고 이미지 데이터는 보이지 않아 이렇게 질문을 올립니다.
===========================================
//준비부분
hr = g_lpD3DDevice->CreateTexture(640, 480, 1, D3DUSAGE_RENDERTARGET,
D3DFMT_X8R8G8B8, D3DPOOL_DEFAULT, &g_lpTexture, NULL)
hr = g_lpTexture->GetSurfaceLevel(0,&g_lpTextureSur);
D3DXCreateSprite(g_lpD3DDevice,&g_lpSprite);
=============================================
//드로우 부분
HRESULT hr = g_lpD3DDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,0), 0, 0 );
g_lpD3DDevice->BeginScene();
g_lpSprite->Begin(D3DXSPRITE_ALPHABLEND);
hr = g_lpD3DDevice->StretchRect( g_lpSurface, 0, g_lpTextureSur, 0, D3DTEXF_NONE ); //제가따로 만든 surface를 texture로 복사
RECT rc;
SetRect(&rc,0,0,640,480);
D3DXVECTOR3 vec = D3DXVECTOR3(0,0,0);
g_lpD3DDevice->SetRenderTarget(0, g_lpTextureSur);
hr = g_lpSprite->Draw(g_lpTexture,&rc,NULL,&vec,0);
g_lpSprite->End();
g_lpD3DDevice->EndScene();
g_lpD3DDevice->Present( NULL, NULL, NULL,NULL );
이렇게 해서 실행시키면 클리어된 화면만 나오네요 ......
혹시 Texture가 잘못생성되었나 해서
hr = g_lpD3DDevice->StretchRect( g_lpTextureSur, 0,g_lpBackbuffer , 0, D3DTEXF_NONE );
이렇게 백버퍼에 직접 복사해서 디스플레이 해 보았더니 정상적으로 나오더라구요.
그렇다면 텍스쳐는 정상적으로 생성 되었다는 얘기 같은데 .. 뭐가 잘못되었는지 잘 모르겠네요.......
[GPG 1 글 5.1] 스프라이트의 드로우 관련 질문입니다...
Moderator: 류광
-
- Posts: 3805
- Joined: 2001-07-25 09:00
- Location: GPGstudy
- Contact: