Avoid redundant setting of FVF.

This commit is contained in:
aignacio_sf 2006-01-04 19:36:32 +00:00
parent 4731e7e50e
commit 54185735cd
2 changed files with 19 additions and 8 deletions

View File

@ -133,6 +133,7 @@ DXGraphicsStateGuardian9(const FrameBufferProperties &properties) :
_enable_lru = dx_lru_management;
_lru = 0;
_last_fvf = 0;
}
////////////////////////////////////////////////////////////////////
@ -382,15 +383,21 @@ apply_vertex_buffer(VertexBufferContext *vbc) {
}
}
// HRESULT hr = _d3d_device->SetVertexShader(dvbc->_fvf);
if (dvbc->_fvf != _last_fvf) {
HRESULT hr = _d3d_device->SetFVF(dvbc->_fvf);
#ifndef NDEBUG
#ifndef NDEBUG
if (FAILED(hr)) {
dxgsg9_cat.error()
<< "SetVertexShader(0x" << (void*)dvbc->_fvf
<< ") failed" << D3DERRORSTRING(hr);
}
#endif
#endif
_last_fvf = dvbc->_fvf;
}
else
{
// dxgsg9_cat.error() << "EQUAL FVF\n";
}
}
////////////////////////////////////////////////////////////////////
@ -2260,6 +2267,8 @@ reset() {
// must check (_screen->_d3dcaps.PrimitiveMiscCaps & D3DPMISCCAPS_BLENDOP) (yes on GF2/Radeon8500, no on TNT)
_d3d_device->SetRenderState(D3DRS_BLENDOP, D3DBLENDOP_ADD);
_last_fvf = 0;
PRINT_REFCNT(dxgsg9, _d3d_device);
}

View File

@ -256,6 +256,8 @@ protected:
Lru *_lru;
DWORD _last_fvf;
public:
virtual TypeHandle get_type() const {
return get_class_type();