D3D9: Fixed crash on resize.

This commit is contained in:
Branimir Karadžić 2015-09-10 13:29:12 -07:00
parent 96dea0ebfa
commit 05490b53ca

View file

@ -335,7 +335,7 @@ namespace bgfx { namespace d3d9
RECT rect;
GetWindowRect( (HWND)g_platformData.nwh, &rect);
m_params.BackBufferWidth = rect.right-rect.left;
m_params.BackBufferWidth = rect.right-rect.left;
m_params.BackBufferHeight = rect.bottom-rect.top;
m_d3d9dll = bx::dlopen("d3d9.dll");
@ -1421,8 +1421,11 @@ namespace bgfx { namespace d3d9
static void setSamplerState(IDirect3DDevice9* _device, DWORD _stage, D3DSAMPLERSTATETYPE _type,DWORD _value)
{
DX_CHECK(_device->SetSamplerState( _stage, _type, _value) );
DX_CHECK(_device->SetSamplerState(D3DVERTEXTEXTURESAMPLER0 + _stage, _type, _value) );
DX_CHECK(_device->SetSamplerState(_stage, _type, _value) );
if (4 > _stage)
{
DX_CHECK(_device->SetSamplerState(D3DVERTEXTEXTURESAMPLER0 + _stage, _type, _value) );
}
}
void setSamplerState(uint8_t _stage, uint32_t _flags)
@ -2745,8 +2748,11 @@ namespace bgfx { namespace d3d9
, 0 == (BGFX_SAMPLER_DEFAULT_FLAGS & _flags) ? _flags : m_flags
);
IDirect3DDevice9* device = s_renderD3D9->m_device;
DX_CHECK(device->SetTexture( _stage, m_ptr) );
DX_CHECK(device->SetTexture(D3DVERTEXTEXTURESAMPLER0 + _stage, m_ptr) );
DX_CHECK(device->SetTexture(_stage, m_ptr) );
if (4 > _stage)
{
DX_CHECK(device->SetTexture(D3DVERTEXTEXTURESAMPLER0 + _stage, m_ptr) );
}
}
void TextureD3D9::resolve() const
@ -3614,10 +3620,10 @@ namespace bgfx { namespace d3d9
numVertices = vb.m_size/vertexDecl.m_decl.m_stride;
}
uint32_t numIndices = 0;
uint32_t numIndices = 0;
uint32_t numPrimsSubmitted = 0;
uint32_t numInstances = 0;
uint32_t numPrimsRendered = 0;
uint32_t numInstances = 0;
uint32_t numPrimsRendered = 0;
if (isValid(draw.m_indexBuffer) )
{
@ -3640,10 +3646,10 @@ namespace bgfx { namespace d3d9
}
else if (prim.m_min <= draw.m_numIndices)
{
numIndices = draw.m_numIndices;
numIndices = draw.m_numIndices;
numPrimsSubmitted = numIndices/prim.m_div - prim.m_sub;
numInstances = draw.m_numInstances;
numPrimsRendered = numPrimsSubmitted*draw.m_numInstances;
numInstances = draw.m_numInstances;
numPrimsRendered = numPrimsSubmitted*draw.m_numInstances;
DX_CHECK(device->DrawIndexedPrimitive(prim.m_type
, draw.m_startVertex
@ -3657,8 +3663,8 @@ namespace bgfx { namespace d3d9
else
{
numPrimsSubmitted = numVertices/prim.m_div - prim.m_sub;
numInstances = draw.m_numInstances;
numPrimsRendered = numPrimsSubmitted*draw.m_numInstances;
numInstances = draw.m_numInstances;
numPrimsRendered = numPrimsSubmitted*draw.m_numInstances;
DX_CHECK(device->DrawPrimitive(prim.m_type
, draw.m_startVertex