diff --git a/miniwin/include/miniwin_d3drm.h b/miniwin/include/miniwin_d3drm.h index c41a2f97..0c018d02 100644 --- a/miniwin/include/miniwin_d3drm.h +++ b/miniwin/include/miniwin_d3drm.h @@ -195,6 +195,7 @@ struct IDirect3DRMMesh : public IDirect3DRMVisual { virtual HRESULT SetVertices(DWORD groupIndex, int offset, int count, D3DRMVERTEX* vertices) = 0; virtual HRESULT GetGroupTexture(DWORD groupIndex, LPDIRECT3DRMTEXTURE* texture) = 0; virtual D3DRMMAPPING GetGroupMapping(DWORD groupIndex) = 0; + virtual HRESULT GetGroupMaterial(DWORD groupIndex, LPDIRECT3DRMMATERIAL* material) = 0; virtual D3DRMRENDERQUALITY GetGroupQuality(DWORD groupIndex) = 0; virtual D3DCOLOR GetGroupColor(D3DRMGROUPINDEX index) = 0; virtual HRESULT GetVertices(DWORD groupIndex, int startIndex, int count, D3DRMVERTEX* vertices) = 0; diff --git a/miniwin/sdl3gpu/include/miniwin_d3drmmesh_sdl3gpu.h b/miniwin/sdl3gpu/include/miniwin_d3drmmesh_sdl3gpu.h index f6742a58..a8d07380 100644 --- a/miniwin/sdl3gpu/include/miniwin_d3drmmesh_sdl3gpu.h +++ b/miniwin/sdl3gpu/include/miniwin_d3drmmesh_sdl3gpu.h @@ -83,6 +83,7 @@ struct Direct3DRMMesh_SDL3GPUImpl : public Direct3DRMObjectBase_SDL3GPUImpl= m_groups.size()) { + return DDERR_GENERIC; + } + + auto& group = m_groups[groupIndex]; + if (!group.material) { + return DDERR_GENERIC; + } + + group.material->AddRef(); + *material = group.material; + return DD_OK; +} + HRESULT Direct3DRMMesh_SDL3GPUImpl::GetGroupTexture(DWORD groupIndex, LPDIRECT3DRMTEXTURE* texture) { if (groupIndex >= m_groups.size()) {