텍스쳐를 렌더타겟할때 일정부분만 렌더링 됩니다

2D, 3D, 다각형, 픽셀 등 게임의 그래픽 프로그래밍에 관한 포럼입니다.

Moderator: 류광

Locked
비회원

텍스쳐를 렌더타겟할때 일정부분만 렌더링 됩니다

Post by 비회원 »

2d 게임 스크롤을 하기위해 화면 사이즈보다 큰 텍스쳐를 만들어서
그곳에 렌더링 한다음 일정부분만 화면에 출력(uv값변경) 하려고 합니다

그런데 텍스쳐 800x600 공간에만 렌더링이되고 800x600 이상일때는 렌더링이
되지 않습니다 텍스쳐크기는 2048x2048입니다

도와주세요 ㅜㅜ
비회원

소스 입니다

Post by 비회원 »

// 텍스쳐 생성
if ( FAILED(D3DXCreateTexture( g_pd3dDevice,
2048, // 폭
2048, // 높이
0,
D3DUSAGE_RENDERTARGET, D3DFMT_A8R8G8B8
, D3DPOOL_DEFAULT, &m_pTexture )) )
{
MessageBox(NULL,_T("Create Map Error"),_T("Error"),0);
}

m_pTexture->GetSurfaceLevel(0, &m_pSurface);

g_pd3dDevice->SetRenderTarget(0,m_pSurface);
// 텍스쳐에 렌더링
for (DWORD y=0; y<TileYCount; y++)
{
for (DWORD x=0; x<TileXCount>SetRenderTarget(0,Old_pSurface);

// 백버퍼에 렌더링
FLOAT tx,ty,tw,th;



tx = 0;
ty = 0;
tw = 1;
th = 1;

static P3TVERTEX v[4];
// 초기화
for(int i=0; i<4; i++ )
{
v.position.z = 1.0f;
v.rhw = 1.0f;
v.color = D3DCOLOR_XRGB(255,255,255);
}

v[0].position.x = 0.0f - 0.5f;
v[0].position.y = 0.0f - 0.5f;
v[1].position.x = 0.0f + ScreenWidth;
v[1].position.y = 0.0f;
v[2].position.x = 0.0f + ScreenWidth;
v[2].position.y = 0.0f + ScreenHeight;
v[3].position.x = 0.0f;
v[3].position.y = 0.0f + ScreenHeight;

v[0].tu0 = tx;
v[0].tv0 = ty;
v[1].tu0 = v[0].tu0 + tw;
v[1].tv0 = v[0].tv0;
v[2].tu0 = v[0].tu0 + tw;
v[2].tv0 = v[0].tv0 + th;
v[3].tu0 = v[0].tu0;
v[3].tv0 = v[0].tv0 + th;

g_pd3dDevice->SetFVF(P3TVERTEX::FVF);
g_pd3dDevice->SetTexture(0,m_pTexture);
g_pd3dDevice->DrawPrimitiveUP(D3DPT_TRIANGLEFAN , 2, v, sizeof(P3TVERTEX) );

사각형이 30*30 개가 찍혀야 되는데 17개에서 짤려서 나와요;;
비회원

Post by 비회원 »

800x600 ... 깊이버퍼 문제로 보입니다..

깊이버퍼는 보통 따로 생성해서 쓰지 않아서 백버퍼에 쓰던걸 쓰거든요..

깊이버퍼를 따로 생성해서 어태치 해보세요..
Locked