mirror of
https://github.com/narzoul/DDrawCompat
synced 2024-12-30 08:55:36 +01:00
parent
142b13e032
commit
1c4445717a
@ -549,10 +549,18 @@ namespace D3dDdi
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT result = m_device.getOrigVtable().pfnCreateVertexShaderDecl(m_device, data, ve.data());
|
HRESULT result = m_device.getOrigVtable().pfnCreateVertexShaderDecl(m_device, data, vertexElements);
|
||||||
if (SUCCEEDED(result))
|
if (SUCCEEDED(result))
|
||||||
{
|
{
|
||||||
m_vertexShaderDecls[data->ShaderHandle] = decl;
|
if (decl.isTransformed)
|
||||||
|
{
|
||||||
|
D3DDDIARG_CREATEVERTEXSHADERDECL d = *data;
|
||||||
|
d.ShaderHandle = nullptr;
|
||||||
|
m_device.getOrigVtable().pfnCreateVertexShaderDecl(m_device, &d, ve.data());
|
||||||
|
decl.untransformedDecl = std::unique_ptr<void, ResourceDeleter>(
|
||||||
|
d.ShaderHandle, ResourceDeleter(m_device, m_device.getOrigVtable().pfnDeleteVertexShaderDecl));
|
||||||
|
}
|
||||||
|
m_vertexShaderDecls.emplace(data->ShaderHandle, std::move(decl));
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@ -1236,15 +1244,17 @@ namespace D3dDdi
|
|||||||
void DeviceState::updateShaders()
|
void DeviceState::updateShaders()
|
||||||
{
|
{
|
||||||
setPixelShader(mapPixelShader(m_app.pixelShader));
|
setPixelShader(mapPixelShader(m_app.pixelShader));
|
||||||
setVertexShaderDecl(m_app.vertexShaderDecl);
|
|
||||||
|
|
||||||
|
auto& vertexDecl = getVertexDecl();
|
||||||
if (Config::Settings::VertexFixup::GPU == m_vertexFixupConfig &&
|
if (Config::Settings::VertexFixup::GPU == m_vertexFixupConfig &&
|
||||||
getVertexDecl().isTransformed)
|
vertexDecl.isTransformed)
|
||||||
{
|
{
|
||||||
|
setVertexShaderDecl(vertexDecl.untransformedDecl.get());
|
||||||
setVertexShaderFunc(getVsVertexFixup());
|
setVertexShaderFunc(getVsVertexFixup());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
setVertexShaderDecl(m_app.vertexShaderDecl);
|
||||||
setVertexShaderFunc(m_app.vertexShaderFunc);
|
setVertexShaderFunc(m_app.vertexShaderFunc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -103,6 +103,7 @@ namespace D3dDdi
|
|||||||
|
|
||||||
struct VertexDecl
|
struct VertexDecl
|
||||||
{
|
{
|
||||||
|
std::unique_ptr<void, ResourceDeleter> untransformedDecl;
|
||||||
std::vector<D3DDDIVERTEXELEMENT> elements;
|
std::vector<D3DDDIVERTEXELEMENT> elements;
|
||||||
std::array<UINT, 8> texCoordOffset;
|
std::array<UINT, 8> texCoordOffset;
|
||||||
std::array<UINT, 8> texCoordType;
|
std::array<UINT, 8> texCoordType;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user