diff --git a/src/gx/d3d/CGxDeviceD3d.cpp b/src/gx/d3d/CGxDeviceD3d.cpp index 50fba9f..85f9125 100644 --- a/src/gx/d3d/CGxDeviceD3d.cpp +++ b/src/gx/d3d/CGxDeviceD3d.cpp @@ -950,7 +950,18 @@ void CGxDeviceD3d::IStateSyncEnables() { } void CGxDeviceD3d::IStateSyncIndexPtr() { - // TODO + if (!this->m_primIndexDirty) { + return; + } + + this->m_primIndexDirty = 0; + + auto d3dIndexBuf = static_cast(this->m_primIndexBuf->m_pool->m_apiSpecific); + + if (this->m_d3dCurrentIndexBuf != d3dIndexBuf) { + this->m_d3dDevice->SetIndices(d3dIndexBuf); + this->m_d3dCurrentIndexBuf = d3dIndexBuf; + } } void CGxDeviceD3d::IStateSyncVertexPtrs() { diff --git a/src/gx/d3d/CGxDeviceD3d.hpp b/src/gx/d3d/CGxDeviceD3d.hpp index 58030a5..5be3a18 100644 --- a/src/gx/d3d/CGxDeviceD3d.hpp +++ b/src/gx/d3d/CGxDeviceD3d.hpp @@ -220,6 +220,7 @@ class CGxDeviceD3d : public CGxDevice { int32_t m_d3dIsHwDevice = 0; D3DDISPLAYMODE m_desktopDisplayMode; D3DFORMAT m_devAdapterFormat; + LPDIRECT3DINDEXBUFFER9 m_d3dCurrentIndexBuf; uint32_t m_deviceStates[DeviceStates_Last]; // Virtual member functions