Renderer clean up (#228)

This commit is contained in:
Anders Jenbo 2025-06-04 02:21:06 +02:00 committed by GitHub
parent e349842ea4
commit 0ac7fee23c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 11 additions and 34 deletions

View File

@ -92,11 +92,6 @@ OpenGL15Renderer::~OpenGL15Renderer()
}
}
void OpenGL15Renderer::SetBackbuffer(SDL_Surface* surface)
{
m_backbuffer = surface;
}
void OpenGL15Renderer::PushVertices(const PositionColorVertex* verts, size_t count)
{
m_vertices.assign(verts, verts + count);
@ -148,7 +143,7 @@ const char* OpenGL15Renderer::GetName()
HRESULT OpenGL15Renderer::Render()
{
if (!m_backbuffer) {
if (!DDBackBuffer) {
return DDERR_GENERIC;
}
SDL_GL_MakeCurrent(DDWindow, m_context);
@ -251,7 +246,7 @@ HRESULT OpenGL15Renderer::Render()
glBindFramebuffer(GL_FRAMEBUFFER, 0);
// Composite onto SDL backbuffer
SDL_BlitSurface(m_renderedImage, nullptr, m_backbuffer, nullptr);
SDL_BlitSurface(m_renderedImage, nullptr, DDBackBuffer, nullptr);
return DD_OK;
}

View File

@ -200,11 +200,6 @@ Direct3DRMSDL3GPURenderer::~Direct3DRMSDL3GPURenderer()
SDL_DestroyGPUDevice(m_device);
}
void Direct3DRMSDL3GPURenderer::SetBackbuffer(SDL_Surface* buf)
{
m_backbuffer = buf;
}
void Direct3DRMSDL3GPURenderer::PushLights(const SceneLight* vertices, size_t count)
{
if (count > 3) {
@ -388,7 +383,7 @@ HRESULT Direct3DRMSDL3GPURenderer::Render()
SDL_DestroySurface(m_renderedImage);
SDL_UnmapGPUTransferBuffer(m_device, m_downloadTransferBuffer);
m_renderedImage = convertedRender;
SDL_BlitSurface(m_renderedImage, nullptr, m_backbuffer, nullptr);
SDL_BlitSurface(m_renderedImage, nullptr, DDBackBuffer, nullptr);
return DD_OK;
}

View File

@ -14,11 +14,6 @@ Direct3DRMSoftwareRenderer::Direct3DRMSoftwareRenderer(DWORD width, DWORD height
m_zBuffer.resize(m_width * m_height);
}
void Direct3DRMSoftwareRenderer::SetBackbuffer(SDL_Surface* buf)
{
m_backbuffer = buf;
}
void Direct3DRMSoftwareRenderer::PushLights(const SceneLight* lights, size_t count)
{
m_lights.assign(lights, lights + count);
@ -292,8 +287,8 @@ void Direct3DRMSoftwareRenderer::DrawTriangleProjected(
}
}
Uint8* pixels = (Uint8*) m_backbuffer->pixels;
int pitch = m_backbuffer->pitch;
Uint8* pixels = (Uint8*) DDBackBuffer->pixels;
int pitch = DDBackBuffer->pitch;
for (int y = minY; y <= maxY; ++y) {
for (int x = minX; x <= maxX; ++x) {
@ -409,7 +404,7 @@ Uint32 Direct3DRMSoftwareRenderer::GetTextureId(IDirect3DRMTexture* iTexture)
if (texRef.version != texture->m_version) {
// Update animated textures
SDL_DestroySurface(texRef.cached);
texRef.cached = SDL_ConvertSurface(surface->m_surface, m_backbuffer->format);
texRef.cached = SDL_ConvertSurface(surface->m_surface, DDBackBuffer->format);
SDL_LockSurface(texRef.cached);
texRef.version = texture->m_version;
}
@ -417,7 +412,7 @@ Uint32 Direct3DRMSoftwareRenderer::GetTextureId(IDirect3DRMTexture* iTexture)
}
}
SDL_Surface* convertedRender = SDL_ConvertSurface(surface->m_surface, m_backbuffer->format);
SDL_Surface* convertedRender = SDL_ConvertSurface(surface->m_surface, DDBackBuffer->format);
SDL_LockSurface(convertedRender);
// Reuse freed slot
@ -468,17 +463,17 @@ const char* Direct3DRMSoftwareRenderer::GetName()
HRESULT Direct3DRMSoftwareRenderer::Render()
{
if (!m_backbuffer || m_vertexBuffer.size() % 3 != 0 || !SDL_LockSurface(m_backbuffer)) {
if (!DDBackBuffer || m_vertexBuffer.size() % 3 != 0 || !SDL_LockSurface(DDBackBuffer)) {
return DDERR_GENERIC;
}
ClearZBuffer();
m_format = SDL_GetPixelFormatDetails(m_backbuffer->format);
m_palette = SDL_GetSurfacePalette(m_backbuffer);
m_format = SDL_GetPixelFormatDetails(DDBackBuffer->format);
m_palette = SDL_GetSurfacePalette(DDBackBuffer);
m_bytesPerPixel = m_format->bits_per_pixel / 8;
for (size_t i = 0; i + 2 < m_vertexBuffer.size(); i += 3) {
DrawTriangleClipped(m_vertexBuffer[i], m_vertexBuffer[i + 1], m_vertexBuffer[i + 2]);
}
SDL_UnlockSurface(m_backbuffer);
SDL_UnlockSurface(DDBackBuffer);
m_vertexBuffer.clear();

View File

@ -334,7 +334,6 @@ HRESULT Direct3DRMViewportImpl::CollectSceneData()
m_renderer->PushLights(lights.data(), lights.size());
m_renderer->PushVertices(verts.data(), verts.size());
m_renderer->SetBackbuffer(DDBackBuffer);
return D3DRM_OK;
}

View File

@ -35,7 +35,6 @@ static_assert(sizeof(SceneLight) == 48);
class Direct3DRMRenderer : public IDirect3DDevice2 {
public:
virtual void SetBackbuffer(SDL_Surface* backbuffer) = 0;
virtual void PushVertices(const PositionColorVertex* vertices, size_t count) = 0;
virtual void PushLights(const SceneLight* vertices, size_t count) = 0;
virtual void SetProjection(D3DRMMATRIX4D perspective, D3DVALUE front, D3DVALUE back) = 0;

View File

@ -15,7 +15,6 @@ public:
static Direct3DRMRenderer* Create(DWORD width, DWORD height);
OpenGL15Renderer(int width, int height, SDL_GLContext context, GLuint fbo, GLuint colorTex, GLuint depthRb);
~OpenGL15Renderer() override;
void SetBackbuffer(SDL_Surface* surface) override;
void PushVertices(const PositionColorVertex* verts, size_t count) override;
void PushLights(const SceneLight* lightsArray, size_t count) override;
void SetProjection(D3DRMMATRIX4D perspective, D3DVALUE front, D3DVALUE back) override;
@ -29,7 +28,6 @@ public:
private:
SDL_GLContext m_context;
D3DRMMATRIX4D m_projection;
SDL_Surface* m_backbuffer = nullptr;
SDL_Surface* m_renderedImage;
int m_width, m_height;
std::vector<PositionColorVertex> m_vertices;

View File

@ -20,7 +20,6 @@ class Direct3DRMSDL3GPURenderer : public Direct3DRMRenderer {
public:
static Direct3DRMRenderer* Create(DWORD width, DWORD height);
~Direct3DRMSDL3GPURenderer() override;
void SetBackbuffer(SDL_Surface* backbuffer) override;
void PushVertices(const PositionColorVertex* vertices, size_t count) override;
void PushLights(const SceneLight* vertices, size_t count) override;
Uint32 GetTextureId(IDirect3DRMTexture* texture) override;
@ -52,7 +51,6 @@ private:
ViewportUniforms m_uniforms;
SceneLights m_lights;
D3DDEVICEDESC m_desc;
SDL_Surface* m_backbuffer = nullptr;
SDL_GPUDevice* m_device;
SDL_GPUGraphicsPipeline* m_pipeline;
SDL_GPUTexture* m_transferTexture;

View File

@ -19,7 +19,6 @@ struct TextureCache {
class Direct3DRMSoftwareRenderer : public Direct3DRMRenderer {
public:
Direct3DRMSoftwareRenderer(DWORD width, DWORD height);
void SetBackbuffer(SDL_Surface* backbuffer) override;
void PushVertices(const PositionColorVertex* vertices, size_t count) override;
void PushLights(const SceneLight* vertices, size_t count) override;
Uint32 GetTextureId(IDirect3DRMTexture* texture) override;
@ -45,7 +44,6 @@ private:
DWORD m_width;
DWORD m_height;
SDL_Surface* m_backbuffer = nullptr;
SDL_Palette* m_palette;
const SDL_PixelFormatDetails* m_format;
int m_bytesPerPixel;