N64: Set jabo to render to an offscreen surface

This commit is contained in:
pjgat09 2014-07-23 02:44:33 +00:00
parent afcb9650ac
commit 42a69de1e2
5 changed files with 16 additions and 7 deletions

View File

@ -137,6 +137,12 @@ extern "C"
last_device = f;
D3D8Base::IDirect3DSurface8 *f2 = NULL;
// make a new render target
HRESULT hr2 = base_device->CreateRenderTarget(pPresentationParameters->BackBufferWidth,pPresentationParameters->BackBufferHeight,D3D8Base::D3DFMT_X8R8G8B8,pPresentationParameters->MultiSampleType,TRUE,&f2);
render_surface = D3D8Wrapper::IDirect3DSurface8::GetSurface(f2);
// Return our wrapped object
*ppReturnedDeviceInterface = f;

View File

@ -415,7 +415,8 @@ extern "C"
LOG("SetRenderTarget");
LOG(pRenderTarget);
LOG(pNewZStencil);
HRESULT hr = m_pDevice->SetRenderTarget(pRenderTarget->GetSurface(),pNewZStencil->GetSurface());
//HRESULT hr = m_pDevice->SetRenderTarget(pRenderTarget->GetSurface(),pNewZStencil->GetSurface());
HRESULT hr = m_pDevice->SetRenderTarget(render_surface->GetSurface(),pNewZStencil->GetSurface());
/*if (this->rTarget != NULL)
{

View File

@ -19,6 +19,7 @@ extern "C"
namespace D3D8Wrapper
{
IDirect3DDevice8 *last_device = NULL;
IDirect3DSurface8 *render_surface = NULL;
void (*rendering_callback)( int );
D3D8Wrapper::IDirect3D8* WINAPI Direct3DCreate8(UINT Version)
@ -64,13 +65,13 @@ extern "C"
}
// get back buffer (surface)
D3D8Base::IDirect3DSurface8 *backbuffer;
D3D8Wrapper::last_device->GetD3D8Device()->GetBackBuffer(0,D3D8Base::D3DBACKBUFFER_TYPE_MONO,&backbuffer);
//D3D8Base::IDirect3DSurface8 *backbuffer;
//D3D8Wrapper::last_device->GetD3D8Device()->GetBackBuffer(0,D3D8Base::D3DBACKBUFFER_TYPE_MONO,&backbuffer);
// surface...
// make a D3DSURFACE_DESC, pass to GetDesc
D3D8Base::D3DSURFACE_DESC desc;
backbuffer->GetDesc(&desc);
D3D8Wrapper::render_surface->GetDesc(&desc);
// get out height/width
*width = desc.Width;
@ -88,7 +89,7 @@ extern "C"
// make a D3DLOCKED_RECT, pass to LockRect
D3D8Base::D3DLOCKED_RECT locked;
backbuffer->LockRect(&locked,&entire_buffer,D3DLOCK_READONLY);
HRESULT hr = D3D8Wrapper::render_surface->LockRect(&locked,&entire_buffer,D3DLOCK_READONLY);
// read out pBits from the LOCKED_RECT
int from_row = desc.Height - 1;
@ -102,11 +103,11 @@ extern "C"
}
// unlock rect
backbuffer->UnlockRect();
D3D8Wrapper::render_surface->UnlockRect();
}
// release the surface
backbuffer->Release();
//backbuffer->Release();
// we're done, maybe?
}

View File

@ -503,6 +503,7 @@ extern "C"
typedef D3D8Base::IDirect3D8* (WINAPI *D3DCREATE)(UINT);
IDirect3D8* WINAPI Direct3DCreate8(UINT Version);
extern IDirect3DDevice8 *last_device;
extern IDirect3DSurface8 *render_surface;
extern void (*rendering_callback)( int );
}
}

Binary file not shown.