diff --git a/miniwin/miniwin/include/miniwin_d3drm.h b/miniwin/miniwin/include/miniwin_d3drm.h index 691a17eb..c41a2f97 100644 --- a/miniwin/miniwin/include/miniwin_d3drm.h +++ b/miniwin/miniwin/include/miniwin_d3drm.h @@ -162,7 +162,9 @@ typedef IDirect3DRMTexture* LPDIRECT3DRMTEXTURE; struct IDirect3DRMTexture2 : public IDirect3DRMTexture {}; typedef IDirect3DRMTexture2* LPDIRECT3DRMTEXTURE2; -struct IDirect3DRMMaterial : public IDirect3DRMObject {}; +struct IDirect3DRMMaterial : public IDirect3DRMObject { + virtual D3DVALUE GetPower() = 0; +}; typedef IDirect3DRMMaterial *LPDIRECT3DRMMATERIAL, **LPLPDIRECT3DRMMATERIAL; struct IDirect3DRMMesh : public IDirect3DRMVisual { diff --git a/miniwin/miniwin/src/miniwin_d3drm.cpp b/miniwin/miniwin/src/miniwin_d3drm.cpp index c659c6ba..03b95313 100644 --- a/miniwin/miniwin/src/miniwin_d3drm.cpp +++ b/miniwin/miniwin/src/miniwin_d3drm.cpp @@ -77,7 +77,13 @@ struct Direct3DRMWinDeviceImpl : public IDirect3DRMWinDevice { void HandlePaint(void* p_dc) override { MINIWIN_NOT_IMPLEMENTED(); } }; -struct Direct3DRMMaterialImpl : public Direct3DRMObjectBase {}; +struct Direct3DRMMaterialImpl : public Direct3DRMObjectBase { + Direct3DRMMaterialImpl(D3DVALUE power) : m_power(power) {} + D3DVALUE GetPower() override { return m_power; } + +private: + D3DVALUE m_power; +}; SDL_GPUGraphicsPipeline* InitializeGraphicsPipeline(SDL_GPUDevice* device) { @@ -214,8 +220,7 @@ struct Direct3DRMImpl : virtual public IDirect3DRM2 { } HRESULT CreateMaterial(D3DVAL power, IDirect3DRMMaterial** outMaterial) override { - MINIWIN_NOT_IMPLEMENTED(); - *outMaterial = static_cast(new Direct3DRMMaterialImpl); + *outMaterial = static_cast(new Direct3DRMMaterialImpl(power)); return DD_OK; } HRESULT CreateLightRGB(D3DRMLIGHTTYPE type, D3DVAL r, D3DVAL g, D3DVAL b, IDirect3DRMLight** outLight) override