From 48dc586ecae821516db2840063eb948aecba76e1 Mon Sep 17 00:00:00 2001 From: ragnarok-clanker Date: Thu, 5 Nov 2026 15:46:42 +0000 Subject: [PATCH] Decompile fn_10125 (CRendererDX7::RenderToTexture) Batch #12342 by cremane: 0 byte-identical, 1 confirmed by peer review. - fn_10125 CRendererDX7::RenderToTexture: logic confirmed by peer review Peer-reviewed-by: Yommy, gordaoprogramas, dori Accepted without human review: peers confirmed the logic ("same" ahead by at least 3, with 70% of the votes). --- Source/Render/DX7/RenderToTextureDX7.cpp | 37 ++++++++++++++---------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/Source/Render/DX7/RenderToTextureDX7.cpp b/Source/Render/DX7/RenderToTextureDX7.cpp index 9c8d9298..e25189a4 100644 --- a/Source/Render/DX7/RenderToTextureDX7.cpp +++ b/Source/Render/DX7/RenderToTextureDX7.cpp @@ -42,26 +42,31 @@ bool CRendererDX7::RenderToTexture( description.ddpfPixelFormat.dwRGBAlphaBitMask = 0xFF000000; ComPtr target; - if (FAILED(g_deviceOwnerDX7->draw->CreateSurface(&description, target.GetAddressOf(), nullptr))) { + if (FAILED((g_deviceOwnerDX7 ? g_deviceOwnerDX7->draw : nullptr)->CreateSurface(&description, target.GetAddressOf(), nullptr))) { return false; } ComPtr previous; - DWORD depth = 0; - DWORD fog = 0; - auto* device = g_deviceOwnerDX7->device; - - if (device->GetRenderTarget(previous.GetAddressOf()) != S_OK || device->GetRenderState(D3DRENDERSTATE_ZENABLE, &depth) != S_OK || - device->GetRenderState(D3DRENDERSTATE_FOGENABLE, &fog) != S_OK) { + if ((g_deviceOwnerDX7 ? g_deviceOwnerDX7->device : nullptr)->GetRenderTarget(previous.GetAddressOf()) != S_OK) { return false; } - if (device->SetRenderTarget(target.Get(), 0) == S_OK) { - device->SetRenderState(D3DRENDERSTATE_ZENABLE, D3DZB_FALSE); - device->SetRenderState(D3DRENDERSTATE_FOGENABLE, 0); - device->Clear(0, nullptr, D3DCLEAR_TARGET, 0, 0, 0); + DWORD depth = 0; + if ((g_deviceOwnerDX7 ? g_deviceOwnerDX7->device : nullptr)->GetRenderState(D3DRENDERSTATE_ZENABLE, &depth) != S_OK) { + return false; + } - if (device->BeginScene() == S_OK) { + DWORD fog = 0; + if ((g_deviceOwnerDX7 ? g_deviceOwnerDX7->device : nullptr)->GetRenderState(D3DRENDERSTATE_FOGENABLE, &fog) != S_OK) { + return false; + } + + if ((g_deviceOwnerDX7 ? g_deviceOwnerDX7->device : nullptr)->SetRenderTarget(target.Get(), 0) == S_OK) { + (g_deviceOwnerDX7 ? g_deviceOwnerDX7->device : nullptr)->SetRenderState(D3DRENDERSTATE_ZENABLE, D3DZB_FALSE); + (g_deviceOwnerDX7 ? g_deviceOwnerDX7->device : nullptr)->SetRenderState(D3DRENDERSTATE_FOGENABLE, 0); + (g_deviceOwnerDX7 ? g_deviceOwnerDX7->device : nullptr)->Clear(0, nullptr, D3DCLEAR_TARGET, 0, 0, 0); + + if ((g_deviceOwnerDX7 ? g_deviceOwnerDX7->device : nullptr)->BeginScene() == S_OK) { for (auto* primitive : primitives) { auto* selected = static_cast(primitive->texture); @@ -69,14 +74,14 @@ bool CRendererDX7::RenderToTexture( primitive->Draw(reinterpret_cast(g_deviceOwnerDX7 ? g_deviceOwnerDX7->device : nullptr)); } - device->EndScene(); + (g_deviceOwnerDX7 ? g_deviceOwnerDX7->device : nullptr)->EndScene(); RECT rectangle{0, 0, width, height}; static_cast(texture)->CopySurface(target.Get(), &rectangle); } - device->SetRenderTarget(previous.Get(), 0); - device->SetRenderState(D3DRENDERSTATE_ZENABLE, depth); - device->SetRenderState(D3DRENDERSTATE_FOGENABLE, fog); + (g_deviceOwnerDX7 ? g_deviceOwnerDX7->device : nullptr)->SetRenderTarget(previous.Get(), 0); + (g_deviceOwnerDX7 ? g_deviceOwnerDX7->device : nullptr)->SetRenderState(D3DRENDERSTATE_ZENABLE, depth); + (g_deviceOwnerDX7 ? g_deviceOwnerDX7->device : nullptr)->SetRenderState(D3DRENDERSTATE_FOGENABLE, fog); } return true;