Implement GetGroupMaterial() (#175)

This commit is contained in:
Anders Jenbo 2025-05-25 23:35:02 +02:00 committed by GitHub
parent 48958c304e
commit cea10248aa
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 18 additions and 0 deletions

View File

@ -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;

View File

@ -83,6 +83,7 @@ struct Direct3DRMMesh_SDL3GPUImpl : public Direct3DRMObjectBase_SDL3GPUImpl<IDir
HRESULT SetGroupMaterial(DWORD groupIndex, IDirect3DRMMaterial* material) override;
HRESULT SetGroupTexture(DWORD groupIndex, IDirect3DRMTexture* texture) override;
HRESULT GetGroupTexture(DWORD groupIndex, LPDIRECT3DRMTEXTURE* texture) override;
HRESULT GetGroupMaterial(DWORD groupIndex, LPDIRECT3DRMMATERIAL* material) override;
HRESULT SetGroupMapping(D3DRMGROUPINDEX groupIndex, D3DRMMAPPING mapping) override;
D3DRMMAPPING GetGroupMapping(DWORD groupIndex) override;
HRESULT SetGroupQuality(DWORD groupIndex, D3DRMRENDERQUALITY quality) override;

View File

@ -158,6 +158,22 @@ HRESULT Direct3DRMMesh_SDL3GPUImpl::SetGroupTexture(DWORD groupIndex, IDirect3DR
return DD_OK;
}
HRESULT Direct3DRMMesh_SDL3GPUImpl::GetGroupMaterial(DWORD groupIndex, LPDIRECT3DRMMATERIAL* material)
{
if (groupIndex >= 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()) {